Add support for #[wasm_bindgen] on async fn (#1754)

This commit adds support to attach `#[wasm_bindgen]` on an `async fn`
which will change the return value into a `Promise` in JS. This in
theory has the exact same semantics as an `async` function in JS where
you call it with all the arguments, nothing happens and you get a
promise back, and then later the promise actually resolves.

This commit also adds a helper trait, `IntoJsResult`, to allow `async`
functions with multiple kinds of return values instead of requiring
everything to be `Result<JsValue, JsValue>`.
This commit is contained in:
Alex Crichton
2019-09-06 13:47:16 -05:00
committed by GitHub
parent 7fd6702c6d
commit 88618116ac
10 changed files with 236 additions and 18 deletions

View File

@ -310,6 +310,7 @@ impl<'src> FirstPassRecord<'src> {
ret: ret.clone(),
rust_attrs: vec![],
rust_vis: public(),
r#async: false,
},
rust_name: rust_ident(rust_name),
js_ret: js_ret.clone(),