mirror of
https://github.com/bevyengine/bevy
synced 2024-11-25 06:00:20 +00:00
c1bb4b255d
# Objective Currently, is is very painful to wait for an asset to load from the context of an `async` task. While bevy's `AssetServer` is asynchronous at its core, the public API is mainly focused on being used from synchronous contexts such as bevy systems. Currently, the best way of waiting for an asset handle to finish loading is to have a system that runs every frame, and either listens for `AssetEvents` or manually polls the asset server. While this is an acceptable interface for bevy systems, it is extremely awkward to do this in a way that integrates well with the `async` task system. At my work we had to create our own (inefficient) abstraction that encapsulated the boilerplate of checking an asset's load status and waking up a task when it's done. ## Solution Add the method `AssetServer::wait_for_asset`, which returns a future that suspends until the asset associated with a given `Handle` either finishes loading or fails to load. ## Testing - CI ## Notes This is an adoption of #14431, the above description is directly from that original PR. --------- Co-authored-by: Joseph <21144246+JoJoJet@users.noreply.github.com> Co-authored-by: andriyDev <andriydzikh@gmail.com> |
||
---|---|---|
.. | ||
macros | ||
src | ||
Cargo.toml | ||
README.md |