bevy_async_task 0.12.0

Ergonomic abstractions to async programming in Bevy
Documentation
//! Task pool example - this demonstrates running several async tasks concurrently.

use core::time::Duration;
use std::task::Poll;

use bevy::app::PanicHandlerPlugin;
use bevy::log::LogPlugin;
use bevy::prelude::*;
use bevy_async_task::TaskPool;
use bevy_async_task::sleep;

fn system1(mut task_pool: TaskPool<'_, u64>) {
    if task_pool.is_idle() {
        info!("Queueing 5 tasks...");
        for i in 1..=5 {
            task_pool.spawn(async move {
                sleep(Duration::from_millis(i * 1000)).await;
                i
            });
        }
    }

    for status in task_pool.iter_poll() {
        if let Poll::Ready(t) = status {
            info!("Received {t}");
        }
    }
}

/// Entry point
pub fn main() {
    App::new()
        .add_plugins((MinimalPlugins, LogPlugin::default(), PanicHandlerPlugin))
        .add_systems(Update, system1)
        .run();
}