如何使用wasm bindgen导入JavaScript函数,且无目标模块?
我正在尝试解决如何使用Rust和wasm bindgen调用JavaScript函数。由于以下原因,我无法将wasm bindgen与ES6模块以及Web Worker一起使用 就我所知,声明存在JavaScript函数供我在Rust端调用是很简单的如何使用wasm bindgen导入JavaScript函数,且无目标模块?,javascript,rust,webassembly,wasm-bindgen,Javascript,Rust,Webassembly,Wasm Bindgen,我正在尝试解决如何使用Rust和wasm bindgen调用JavaScript函数。由于以下原因,我无法将wasm bindgen与ES6模块以及Web Worker一起使用 就我所知,声明存在JavaScript函数供我在Rust端调用是很简单的 #[wasm#u bindgen] 外行{ fn日志进度(百分比:f64); } 但是,我不知道在哪里定义JavaScript实现。如果我试图从调用未定义的logProgress的JavaScript调用一个Rust函数,那么我会得到一个运行时错
#[wasm#u bindgen]
外行{
fn日志进度(百分比:f64);
}
但是,我不知道在哪里定义JavaScript实现。如果我试图从调用未定义的logProgress
的JavaScript调用一个Rust函数,那么我会得到一个运行时错误:error:logProgress未定义
我可以从wasm bindgen文档中看到,如果我将wasm bindgen与ES6模块一起使用,那么我可以将rust代码更改为
#[wasm_bindgen(module=“/progress.js”)]
外行{
fn日志进度(百分比:f64);
}
并在progress.js
导出功能日志进度(百分比){
控制台日志(百分比)
//实际的实现不会仅仅记录日志
}
由于我改为通过wasm_bindgen全局导入Rust API,我想我应该能够在我的Web Worker中的同一部分定义实现,但我已经搜索了很多文档,找不到任何关于如何实现的信息
importScripts('foo_wasm.js')
wasm_bindgen('foo_wasm_bg.wasm')。然后(fooWasmModule=>{
memory=fooWasmModule.memory
const{Foo,Bar,Baz,foobar}=wasm_bindgen;
//JS已经“导入”了Rust结构和函数
//如何将JS函数“导出”到Rust?
}
wasm_bindgen将绑定导入中的logProgress
(per-这里关于bindgen没有什么特别之处)。可以在工作者的全局命名空间中定义函数,例如与importScripts
调用处于同一级别,也可以使用另一个importScripts
调用从文件导入该函数(或同一调用的另一个参数)。如果要使用非全局命名空间,请设置js_命名空间
。