Rust编译成WASM后如何在浏览器中调用异步函数?
我用wasm-pack把Rust代码编译成了WebAssembly,但在前端调用返回Promise的异步函数时总是报错,说找不到对应的导出方法。明明在Rust里用了#[wasm_bindgen]和async,是不是还需要额外配置?
这是我的Rust代码:
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub async fn fetch_data() -> Result<String, JsValue> {
// 模拟异步操作
Ok("done".into())
}
在JS里直接调用fetch_data()就报TypeError: pkg.fetch_data is not a function,到底哪里漏了?
问题大概率是你导入方式错了,或者没等wasm初始化完成就调用了。
JS端这样写:
重点:必须先调
init()完成WASM初始化,之后才能调用导出的函数。