Web ワーカーは、メイン スレッドとは別にバックグラウンドで JavaScript コードを実行できるようにする HTML5 の機能です。これは、複雑な計算、時間のかかるタスク、または Web アプリケーションの全体的なパフォーマンスを向上させる処理のオフロードを処理する場合に特に役立ちます。 HTML5 で Web ワーカーを使用するいくつかの方法を次に示します。
Web ワーカーの作成:別の JavaScript ファイルを作成し、 Worker
コンストラクターを使用することで、新しい Web ワーカーを作成できます。例えば:
JavaScript // main.js
const myWorker = new Worker('worker.js');
JavaScript // worker.js
self.onmessage = function (e) {
const result = e.data + ' processed in the worker';
self.postMessage(result);
};
メッセージの送受信: Web ワーカーは、メッセージング システムを通じてメイン スレッドと通信します。 postMessage
方法を使用すると、メインスレッドからワーカーにメッセージを送信したり、その逆にメッセージを送信したりできます。例えば:
JavaScript // main.js
myWorker.postMessage('Data to process in the worker');
myWorker.onmessage = function (e) {
console.log('Worker says: ', e.data);
};
JavaScript // worker.js
self.onmessage = function (e) {
const result = e.data + ' processed in the worker';
self.postMessage(result);
};
self.onmessage = function (e) {
const result = e.data + ' processed in the worker';
self.postMessage(result);
};
エラーの処理: onerror
イベントをリッスンすることで、ワーカー内で発生したエラーを処理できます。これにより、バックグラウンド処理中に発生する可能性のある問題をデバッグできます。
JavaScript // worker.js
self.onerror = function (e) {
console.error('Error in worker: ', e.message, ' at ', e.filename, ' line ', e.lineno);
};
ワーカーの終了:ワーカーが不要になった場合は、 terminate
方法を使用してワーカーを終了できます。
JavaScript // main.js
myWorker.terminate();
外部ライブラリのインポート:ワーカーはimportScripts
メソッドを使用して外部ライブラリをインポートできます。これにより、ワーカー内でサードパーティのライブラリを使用できるようになります。
JavaScript // worker.js
importScripts('external-library.js');
// Now you can use functions from the external library
専用ワーカーと共有ワーカー: Web ワーカーには、専用ワーカー (メイン スレッドと 1 対 1 の関係) と共有ワーカー (複数のスクリプト間で共有) の 2 種類があります。
JavaScript // Dedicated Worker
const myWorker = new Worker('worker.js');
// Shared Worker
const sharedWorker = new SharedWorker('shared-worker.js');
これらは、HTML5 で Web ワーカーを使用する方法のほんの数例です。これらは、Web アプリケーションで並列処理を実行し、タスクを別のスレッドにオフロードすることでパフォーマンスを向上させる強力な方法を提供します。