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

1 回复

更多关于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);
}

回到顶部