Rust/Webassembly/wasm-bindgen - получение значений из обещания `js_sys'

Я играю с wasm-bindgen( https://github.com/rustwasm/wasm-bindgen), просто из любопытства.

Играя с Navigator (web_sys crate) Наткнулся на такой способ:

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

он возвращает Result<Promise, JsValue>... теперь я новичок в Rust, и мой вопрос в том, как мне получить значение Promise?

Как Closure::wrapработает? Как использовать его с методом then для получения результатов?

Интересно, может ли кто-нибудь быть настолько любезным, чтобы объяснить мне, как бороться с Promise?

Вот пример, который возвращает 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 
   }
}

Всего наилучшего, Лука

1 ответ

Решение

Существует официальная документация доступна на сайте wasm-bindgen.

Короче говоря, вы можете использовать wasm_bindgen_futures::JsFuture::from(promise).await? получить результат обещания и продолжить работу с обычным Rust async функциональность.

Другие вопросы по тегам