问题描述
我正在尝试弄清楚如何使用Rust和wasm-bindgen调用JavaScript函数。由于lack of browser support,我无法将wasm-bindgen与ES6模块以及Web Worker一起使用。
据我所知,声明存在一个JavaScript函数供我在Rust端调用很简单
#[wasm_bindgen]
extern {
fn logProgress(percent: f64);
}
但是我不知道在哪里定义JavaScript实现。如果我尝试从JavaScript中调用未定义的logProgress
来调用Rust函数,则会收到运行时错误:Error: logProgress is not defined
从wasm-bindgen文档中可以看到,如果我将wasm-bindgen与ES6模块一起使用,则可以将rust代码更改为
#[wasm_bindgen(module = "/progress.js")]
extern {
fn logProgress(percent: f64);
}
并在progress.js
export function logProgress(percent) {
console.log(percent)
// actual implementation would not just log
}
由于我改为通过wasm_bindgen
全局导入我的Rust API,所以我想我应该能够在Web Worker中同一部分的某个位置定义实现,但是我搜索了很多文档和找不到有关该操作的任何信息。
importScripts('foo_wasm.js')
wasm_bindgen('foo_wasm_bg.wasm').then(fooWasmModule => {
memory = fooWasmModule.memory
const { Foo,Bar,Baz,foobar } = wasm_bindgen;
// JS has 'imported' the Rust structs and functions
// How to 'export' the JS functions to Rust?
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)