1***@qq.com
1***@qq.com
  • 发布:2024-08-13 11:32
  • 更新:2024-08-13 18:04
  • 阅读:183

【报Bug】安卓端 webassembly.instantiate 异步一直卡住 不返回结果

分类:uni-app

产品分类: 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 异步一直卡住 不返回结果

2024-08-13 11:32 负责人:无 分享
已邀请:
DCloud_uni-ad_HDX

DCloud_uni-ad_HDX

如果不需要多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);  
}

要回复问题请先登录注册