3

出于好奇,我正在玩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 
   }
}

一切顺利,卢卡

4

1 回答 1

3

wasm -bindgen 站点上提供了官方文档

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

于 2020-03-21T14:18:24.627 回答