Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用wasm bindgen导入JavaScript函数,且无目标模块?_Javascript_Rust_Webassembly_Wasm Bindgen - Fatal编程技术网

如何使用wasm bindgen导入JavaScript函数,且无目标模块?

如何使用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函数,那么我会得到一个运行时错

我正在尝试解决如何使用Rust和wasm bindgen调用JavaScript函数。由于以下原因,我无法将wasm bindgen与ES6模块以及Web Worker一起使用

就我所知,声明存在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_命名空间