簡體   English   中英

如何在Web Worker中使用WebAssembly(wasm)代碼?

[英]How to use WebAssembly (wasm) code in a Web Worker?

目前,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是否有更簡潔的方法,這不會引入額外的提取步驟?

您可以將WebAssembly.Module postMessageWorker 因此,您將在主腳本中編譯foo.wasm ,然后在postMessage編譯它,這些實現應該進行優化,以便不重新編譯或重復代碼(盡管此時並非所有實現都這樣做)。 然后,您只需要您的工作人員進行實例化。

實例化所需的一件事是importObject ,你傳入的內容需要駐留在該worker中! 因此,即使您可以說“使用此.wasm新工作者”,您也無法指定importObject

在結構化克隆中有記錄,它也會影響IndexDB。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM