https://developer.mozilla.org/ja/docs/Web/API/Web_Workers_API/Using_web_workers
https://qiita.com/mohayonao/items/872166cf364e007cf83d
Web Worker は、javascript でスレッド処理を行うためのAPI。
Worker用に用意された、呼び出し元とは別の JavaScript ファイルを別スレッドで実行する。
Worker用のスクリプトはwindowがグローバルオブジェクトではないので、直接DOM操作などは行えない。
postMessageメソッドを実行することで、"message"イベントが発生するのでそれを使ってスレッド間で通信を行う。
// useWorker.html function runWorker() { var worker = new Worker("worker.js"); worker.addEventListener("message", function(e) { console.log(e.data); }); worker.postMessage("paramater"); } // worker.js self.addEventListener("message", function(e) { var result = doSomething(e.data); // 時間がかかる処理 self.postMessage(result); });
基本的に2つファイルが必要だが、自分自身をワーカーファイルとして利用したり、ワーカーファイルに書く文字列をBlobオブジェクトにしてそれを読んだりすることで、1つのファイルでWorkerAPIを扱う手法もある。