Files
2026-08-01 16:11:49 +03:00

40 lines
1.5 KiB
Markdown

# `wasm-bindgen-futures`
[API Documentation][docs]
This crate bridges the gap between Rust `Future`s and JavaScript `Promise`s.
As of this version the implementation lives in [`js-sys`] under the `futures`
feature. Depending on this crate automatically activates that feature, which
gives `js_sys::Promise` a first-class `IntoFuture` implementation — meaning
you can `.await` any `Promise` directly:
```rust
use js_sys::Promise;
use wasm_bindgen::prelude::*;
async fn example(promise: Promise) -> Result<JsValue, JsValue> {
promise.await
}
```
All public items from the previous API are re-exported unchanged for backwards
compatibility:
- [`JsFuture`] — convert a `Promise` into a named `Future` type
- [`spawn_local`] — run a `Future<Output = ()>` on the JS microtask queue
- [`future_to_promise`] — convert a `Future` into a JS `Promise`
- [`future_to_promise_typed`] — typed variant of `future_to_promise`
Under the feature flag `futures-core-03-stream` there is support for
`AsyncIterator` to `Stream` conversion via `JsStream`.
See the [API documentation][docs] for more info.
[docs]: https://wasm-bindgen.github.io/wasm-bindgen/api/wasm_bindgen_futures/
[`js-sys`]: https://docs.rs/js-sys
[`JsFuture`]: https://docs.rs/js-sys/*/js_sys/futures/struct.JsFuture.html
[`spawn_local`]: https://docs.rs/js-sys/*/js_sys/futures/fn.spawn_local.html
[`future_to_promise`]: https://docs.rs/js-sys/*/js_sys/futures/fn.future_to_promise.html
[`future_to_promise_typed`]: https://docs.rs/js-sys/*/js_sys/futures/fn.future_to_promise_typed.html