Shu*_*ula 5 javascript event-driven webassembly
是否可以将 javascript 回调传递给 WebAssembly?我们可以从 WebAssembly 触发一个事件并在 javascript 中收听它吗?
我发现这篇文章来自 Kevin Hoffman 尝试使用 rust。
归结为使用WebAssembly.instantiate(bufferSource, importObject)
optional importObject
。您可以在MDN上阅读有关此内容的更多信息。
这是文章的例子
<html>
<head>
<script>
function logit() {
console.log('this was invoked by Rust, written in JS');
}
let imports = {logit};
fetch('wasm_project.gc.wasm')
.then(r => r.arrayBuffer() )
.then(r => WebAssembly.instantiate(r, { env: imports }))
.then(wasm_module => {
alert(`2 + 1 = ${wasm_module.instance.exports.add_one(2)}`);
});
</script>
</head>
<body></body>
</html>
Run Code Online (Sandbox Code Playgroud)
extern "C" {
fn logit();
}
Run Code Online (Sandbox Code Playgroud)
#[no_mangle]
pub extern fn add_one(a: u32) -> u32 {
logit();
a + 1
}
Run Code Online (Sandbox Code Playgroud)
所有功劳都归功于凯文霍夫曼的文章