executor 0.0.4

A minimalistic async/await executor for web assembly

Executor: Async-Await in Web Assembly

[dependencies]
executor = "0.0.3"

Example

use executor::Executor;

pub fn main() -> () {
    Executor::spawn(async {
        console_log("Hello");
        window_set_timeout(1000).await;
        console_log("World");
        window_set_timeout(1000).await;
        console_log("!");
    });
}

Features

  • #![no_std]
  • handle spawn (i.e. don't spawn beyond your initial entry point)
  • handle non self waking futures (i.e futures that immediately return values and JS futures operate asynchronously)
  • handle more than one spawn ( needed for callbacks that start async work )
  • handle self waking futures (i.e. Since JS is single threaded, self waking futures cause a mutex lock, futures must call some other mechanism to asynchronously re-enter a web assembly module)

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in woke by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.