作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
目前,Web Worker 是这样实例化的:
let worker = new Worker('worker.js');
然后浏览器获取 worker.js
并开始响应消息。
我想使用 WebAssembly 实现我的 worker 的功能。理想情况下,我想做这样的事情:
let worker = new Worker('worker.wasm');
但我很确定那是不可能的。最明显的替代方法是让 worker.js
获取 worker.wasm
并编译和运行它。但这意味着我们获取一个脚本 (worker.js
),它的唯一工作是获取并运行另一个脚本 (worker.wasm
)。这让我觉得很恶心。所以我的问题是:是否有一种在 Web Worker 中使用 WebAssembly 的更简洁的方法,它不会引入额外的获取步骤?
最佳答案
您可以postMessage
WebAssembly.Module
到Worker
。因此,您需要在主脚本中编译 foo.wasm
,然后编译 postMessage
,希望优化哪些实现,以免重新编译或重复代码(尽管在此时间不是所有的实现都这样做)。然后您只需要您的工作人员实例化。
实例化需要的一件事是 importObject
,并且您传入的内容需要驻留在该 worker 中!所以即使你可以说“new worker with this .wasm
”你也没有办法指定 importObject
。
这已记录在案 in structured clone ,这也会影响 IndexDB。
关于javascript - 如何在 Web Worker 中使用 WebAssembly (wasm) 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47083951/
我是一名优秀的程序员,十分优秀!