Rust/Webassembly/wasm-bindgen - 从“js_sys”Promise 获取值
Rust/Webassembly/wasm-bindgen - getting values from `js_sys' Promise
我正在玩 wasm-bindgen
( https://github.com/rustwasm/wasm-bindgen ),只是出于好奇。
在玩 Navigator
(web_sys
箱子)时我偶然发现了这个方法:
https://docs.rs/web-sys/0.3.36/web_sys/struct.MediaDevices.html#method.enumerate_devices
it returns a Result<Promise, JsValue>
..现在,我是 Rust 的新手,我的问题是如何获取 Promise
的值?
Closure::wrap
是如何工作的?
如何使用它与 then 方法来获取结果?
不知道有没有好心人告诉我怎么处理Promise
这里有一个例子 returns a Promise
:
let window = web_sys::window().expect("no global `window` exists");
let navigator = window.navigator();
if let Ok(devs) = navigator.media_devices() {
if let Ok(prom) = devs.enumerate_devices() {
//..??? how to list all devices
}
}
一切顺利,
卢卡
有official documentation available on the wasm-bindgen site.
简而言之,您可以使用 wasm_bindgen_futures::JsFuture::from(promise).await?
检索承诺的结果并继续使用通常的 Rust async
功能。
我正在玩 wasm-bindgen
( https://github.com/rustwasm/wasm-bindgen ),只是出于好奇。
在玩 Navigator
(web_sys
箱子)时我偶然发现了这个方法:
https://docs.rs/web-sys/0.3.36/web_sys/struct.MediaDevices.html#method.enumerate_devices
it returns a Result<Promise, JsValue>
..现在,我是 Rust 的新手,我的问题是如何获取 Promise
的值?
Closure::wrap
是如何工作的?
如何使用它与 then 方法来获取结果?
不知道有没有好心人告诉我怎么处理Promise
这里有一个例子 returns a Promise
:
let window = web_sys::window().expect("no global `window` exists");
let navigator = window.navigator();
if let Ok(devs) = navigator.media_devices() {
if let Ok(prom) = devs.enumerate_devices() {
//..??? how to list all devices
}
}
一切顺利, 卢卡
有official documentation available on the wasm-bindgen site.
简而言之,您可以使用 wasm_bindgen_futures::JsFuture::from(promise).await?
检索承诺的结果并继续使用通常的 Rust async
功能。