node_sys/interface/
async_iterator.rs1use js_sys::Promise;
2use wasm_bindgen::{prelude::*, JsCast};
3
4fn looks_like_iterator(it: &JsValue) -> bool {
6 #[wasm_bindgen]
7 extern {
8 type MaybeIterator;
9 #[wasm_bindgen(method, getter)]
10 fn next(this: &MaybeIterator) -> JsValue;
11 }
12 if !it.is_object() {
13 return false;
14 }
15 let it = it.unchecked_ref::<MaybeIterator>();
16 it.next().is_function()
17}
18
19#[wasm_bindgen]
20extern {
21 #[derive(Clone, Debug)]
22 #[wasm_bindgen(is_type_of = looks_like_iterator)]
23 pub type AsyncIterator;
24
25 #[wasm_bindgen(catch, method, structural)]
26 pub fn next(this: &AsyncIterator) -> Result<Promise, JsValue>;
27}