uni-app 安卓端 webassembly.instantiate 异步一直卡住不返回结果
uni-app 安卓端 webassembly.instantiate 异步一直卡住不返回结果
项目信息 | 详细信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | window10 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.24 |
手机系统 | Android |
手机系统版本号 | Android 12 |
手机厂商 | 华为 |
手机机型 | Mate 50 Pro |
页面类型 | vue |
vue版本 | vue3 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
示例代码:
const init1 = async () =>{
const importObject = {
my_namespace: {
imported_func: arg => {
console.log(arg);
}
}
};
let s = 'data:application/wasm;base64,AGFzbQEAAAABCAJgAX8AYAAAAh4BDG15X25hbWVzcGFjZQ1pbXBvcnRlZF9mdW5jAAADAgEBBxEBDWV4cG9ydGVkX2Z1bmMAAQoIAQYAQSoQAAs=';
s = s.replace(/^data:[^;]+;base64,/,'')
let blob = uni.base64ToArrayBuffer(s);
WebAssembly.compile(blob).then(module => {
// 初始化Wasm模块
WebAssembly.instantiate(module,importObject).then(resultObject => {
const exports = resultObject.exports;
console.log('查看导出的内容', exports);
exports.exported_func()
// console.log('执行函数:', exports.addTwo(10 ,20));
})
})
// console.log(blob, WebAssembly.instantiate(blob,importObject))
const d = await WebAssembly.instantiate(blob,importObject)
d.instance.exports.exported_func();
}
init1()
操作步骤:
上述代码直接执行即可
预期结果:
输出 console.log('查看导出的内容', exports);
实际结果:
一直卡住 里面的代码一直在等待执行
bug描述:
安卓端 webassembly.instantiate
异步一直卡住 不返回结果
更多关于uni-app 安卓端 webassembly.instantiate 异步一直卡住不返回结果的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app 安卓端 webassembly.instantiate 异步一直卡住不返回结果的实战教程也可以访问 https://www.itying.com/category-93-b0.html
如果不需要多worker支持,直接使用下面的简洁导出
const importObject = {
my_namespace: {
imported_func: arg => {
console.log({
arg
});
}
}
};
try {
const mod = new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 8, 2, 96, 1, 127, 0, 96,
0, 0, 2, 30, 1, 12, 109, 121, 95,
110, 97, 109, 101, 115, 112, 97, 99, 101, 13, 105, 109, 112, 111, 114, 116, 101, 100, 95, 102,
117, 110, 99, 0, 0, 3, 2, 1, 1, 7, 17, 1, 13, 101, 120, 112, 111, 114, 116, 101, 100, 95, 102,
117, 110, 99, 0, 1, 10, 8, 1, 6, 0, 65, 42, 16, 0, 11
]));
const instance = new WebAssembly.Instance(mod, importObject);
instance.exports.exported_func();
} catch (e) {
console.log(e);
}