Rust/Web assembly/wasm-bindgen - 从“js_sys”Promise 获取值

Luc*_*epe 5 promise rust webassembly wasm-bindgen

我正在玩wasm-bindgenhttps://github.com/rustwasm/wasm-bindgen),只是出于好奇。

在玩Navigatorweb_sys板条箱)时,我偶然发现了这个方法:

https://docs.rs/web-sys/0.3.36/web_sys/struct.MediaDevices.html#method.enumerate_devices

它返回一个Result<Promise, JsValue>..now,我是 Rust 新手,我的问题是如何获取 的值Promise

效果如何Closure::wrap?如何使用then方法来获取结果?

我想知道是否有人可以好心地向我解释如何处理Promise

这是一个返回 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 
   }
}
Run Code Online (Sandbox Code Playgroud)

祝你一切顺利,卢卡

mil*_*ner 5

wasm-bindgen 站点上有官方文档。

简而言之,您可以用来wasm_bindgen_futures::JsFuture::from(promise).await?检索 Promise 的结果并继续使用通常的 Rustasync功能。