だから私は基本的にこれをやっています(簡略化)...
var script = '...some JS code...',
blob = blob = new Blob([script]),
worker = [];
for (var i=0; i<10; i++) {
worker[i] = new Worker(URL.createObjectURL(blob));
}
...同じJSファイルの10個のインスタンスを動的に作成し、それを10個のWebワーカーに渡します(その後、コントローラー/デリゲーターは特定のタスクを10個に分割してさらに処理しますが、現時点ではこの質問では重要ではありません) 。
これはすべて正常に機能しますが、Chrome開発者ツール(ネットワーク)でコードを調べたところ、Chromeは実際に同じファイルの10個の別々のバージョンを作成していることがわかります(初期化に追加のミリ秒がかかります-作成された追加のファイルごとにウォーターフォールを確認できます)。その同じファイル。
ループの外にURL.createObjectURL(blob)
出て別の変数に入れ、その変数をループ内のワーカーに渡すと(正しく機能しなくなります)、すべてのワーカーがまったく同じJSファイルを共有しているように見えます(各ワーカーが独自の個別のプロセスを開始することを期待します)。
何か案は?どういうわけか一度だけ作成URL.createObjectURL(blob)
してから、どういうわけかそれを複製/クローン化できますか?それが助けになるのか、それとも違うものになるのかわかりませんか?