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 ),只是出于好奇。

在玩 Navigatorweb_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 功能。