Crate wasm_main_executor

Source
Expand description

§Run futures on the main browser thread

Certain tasks, like creating an AudioContext or RtcPeerConnection, can only be performed on the main browser thread. wasm_main_executor provides an easy way to send futures to the main browser thread from any context. This allows web workers to spawn main-threaded tasks and await their completion, and facilitates the implementation of cross-thread polyfills/shims.

§Usage

The following is a simple example of executor usage:

async fn test_future() -> i32 {
    // Do some async or main-threaded work...
    2
}
 
// Start the executor. This must be called from the main browser thread.
wasm_main_executor::initialize().unwrap();
 
// Futures may be spawned on background threads using the executor.
// The future runs on the main thread.
let fut = wasm_main_executor::spawn(test_future());
 
// A future is returned which may be awaited on the background thread.
assert_eq!(2, futures::executor::block_on(fut));

Enums§

ExecutorInitializationError
Describes an error that occurred while starting the executor.

Functions§

initialize
Initializes the main thread executor. This function must be called from the main thread before spawning any futures.
spawn
Spawns a new task for the main thread executor, providing a handle which may be used to await the task result.