# bevy_async_task
**Repository Path**: happydpc/bevy_async_task
## Basic Information
- **Project Name**: bevy_async_task
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-07-18
- **Last Updated**: 2025-07-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Bevy Async Task
[](https://discord.gg/zrjnQzdjCB)

[](https://github.com/loopystudios/bevy_async_task/actions)
[](https://deps.rs/repo/github/loopystudios/bevy_async_task)
[](https://crates.io/crates/bevy_async_task)
[](https://docs.rs/bevy_async_task)
A minimum crate for ergonomic abstractions to async programming in Bevy. There is full API support for **wasm** and **native**. Android and iOS are untested (Help needed).
Bevy Async Task provides Bevy system parameters to run asynchronous tasks in the background on web and native with timeouts and output capture.
## Bevy version support
|bevy|bevy_async_task|
|---|---|
|0.16|0.6-0.8, main|
|0.15|0.3-0.5|
|0.14|0.2|
|0.13|0.1|
|<= 0.13|Unsupported|
## Usage
There are several [examples](examples/) for reference.
You can also run examples on web:
```shell
# Make sure the Rust toolchain supports the wasm32 target
rustup target add wasm32-unknown-unknown
cargo run_wasm --example simple
```
### Polling in systems
Poll one task at a time with `TaskRunner`:
```rust
async fn long_task() -> u32 {
sleep(Duration::from_millis(1000)).await;
5
}
fn my_system(mut task_runner: TaskRunner) {
if task_runner.is_idle() {
task_executor.start(long_task());
info!("Started!");
}
match task_runner.poll() {
Poll::Ready(v) => {
info!("Received {v:?}");
}
Poll::Pending => {
// Waiting...
}
}
}
```
Poll many similar tasks simultaneously with `TaskPool`:
```rust
fn my_system(mut task_pool: TaskPool) {
if task_pool.is_idle() {
info!("Queueing 5 tasks...");
for i in 1..=5 {
task_pool.spawn(async move { // Closures work too!
sleep(Duration::from_millis(i * 1000)).await;
i
});
}
}
for status in task_pool.iter_poll() {
if let Poll::Ready(v) = status {
info!("Received {v:?}");
}
}
}
```
We also have a [`cross_system` example](./examples/cross_system.rs).
## Community
All Loopy projects and development happens in the [Loopy Discord](https://discord.gg/KSfKceUKde). The discord is open to the public.
Contributions are welcome by pull request. The [Rust code of conduct](https://www.rust-lang.org/policies/code-of-conduct) applies.
## License
Licensed under either of
- Apache License, Version 2.0
([LICENSE-APACHE](LICENSE-APACHE) or )
- MIT license
([LICENSE-MIT](LICENSE-MIT) or )
at your option
## Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.