1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
use js_sys::Function;
use js_sys::Promise;
use wasm_bindgen::prelude::*;
/// Deferred promise - an object that has `resolve()` and `reject()`
/// functions that can be called outside of the promise body.
#[wasm_bindgen]
pub fn defer() -> Promise {
Function::new_no_args(
r###"
let resolve, reject;
const p = new Promise((resolve_, reject_) => {
resolve = resolve_;
reject = reject_;
});
p.resolve = resolve;
p.reject = reject;
return p;
"###,
)
.call0(&JsValue::undefined())
.unwrap()
.into()
}