0

给定以下(简化的)Rust 代码:

#[wasm_bindgen(js_name = MyClass)]
pub struct MyClassJs {
    my_struct: MyStruct,
}

#[wasm_bindgen(js_class = MyClass)]
impl MyClassJs {
    #[wasm_bindgen(constructor)]
    pub async fn new() -> Result<MyClassJs, JsValue> {
        // ...
    }
}

使用 编译wasm-pack,此建议来自wasm-bindgen书:

// Note that a dynamic `import` statement here is required due to
// webpack/webpack#6615, but in theory `import { greet } from './pkg';`
// will work here one day as well!
const rust = import('./pkg');

rust
  .then(m => m.greet('World!'))
  .catch(console.error);

前面的声明让我相信,在 Promise 解决之前,进行任何与 rust-wasm 相关的调用都是非法的。

这提出了一个问题:这些陈述中哪一个是正确的?

  1. new MyClassJs()任何时候(甚至在 Promise 解决之前)调用是否合法?
  2. 仅在 Promise 解决后调用是否合法new MyClassJs()(但在任何地方,包括then回调之外?
  3. new MyClassJs()只在回调内部调用是否合法then

我尝试使用这些资源找到答案,但发现它们不包含我的问题的答案:

编辑:我目前在 webpack 4 上。

4

0 回答 0