wasm 源码
定义表格,包含 2 个函数,元素从 0 开始,定义函数类型,然后导出调用表格的函数,通过表格索引去调用具体函数。函数 1 返回 42,函数 2 返回 13。
(module
(table 2 funcref)
(func $f1 (result i32)
i32.const 42)
(func $f2 (result i32)
i32.const 13)
(elem (i32.const 0) $f1 $f2)
(type $return_i32 (func (result i32)))
(func (export "callByIndex") (param $i i32) (result i32)
local.get $i
call_indirect (type $return_i32)
)
)
小程序调用
定义全局变量
let inst;
定义加载 wasm 函数,并在 onload 中调用
loadWasm() {
var importObj = {
};
WXWebAssembly.instantiate("/wasm/wasm-table.wasm", importObj).then(
(result) => {
console.log("初始化成功");
inst = result.instance.exports;
},
(err) => {
console.log("初始化失败", err);
}
);
},
调用 wasm 的函数,这里写了两个按钮,分别调用不同函数。
callWasm2() {
let i = inst.callByIndex(1);
console.log(i); // 返回 13
wx.showToast({
title: ''+i,
})
},
callWasm1() {
let i = inst.callByIndex(0);
console.log(i); // 返回 42
wx.showToast({
title: ''+i,
})
},
这样就可以了,可以在小程序五位字节码查看效果,有任何问题,欢迎提问讨论。