测试在firefox中使用正常,然后在edge(版本 131.0.2903.63 (正式版本) (64 位))里面就报错了,chrome(版本 131.0.6778.86(正式版本) )也是一样报错,完整代码如下
fn main {
set_callback(fn(x,y)->Int{
x+y
})
}
fn set_callback(f: (Int,Int)->Int)->Unit= "ffi" "set_callback"
<!DOCTYPE html>
<html>
<!-- <head>
<script src="dxwebApp.js" type="module"></script>
</head> -->
<body>
<script type="module">
let f=undefined
let importobj ={
"moonbit:ffi": {
"make_closure": (funcref, context) => funcref.bind(null, context)
},
// 使用示例
"ffi": {
"set_callback": (func) => { f = func; }, // 设置回调函数
"use_callback": () => f(2,3) // 使用回调函数
}
}
const { instance } = await WebAssembly.instantiateStreaming(fetch("/target/wasm-gc/release/build/main/main.wasm"),importobj);
instance.exports._start();
alert(f(34,66))
alert(importobj.ffi.use_callback());
</script>
</body>
</html>
错误的结果是执行函数
alert(f(34,66))这里报告类型不兼容