BLOG
Web Workers
2015/3/9
JavaScriptは処理を逐次実施するシングルスレッドです。
setTimeoutで実行される処理やXMLHttpRequestのコールバックなど、非同期で動作するものはたくさんありますが、これらも全て単一のスレッドで動作します。
HTML5のAPIにWeb Workersというものがあり、Web Workersを使えばJavaScriptコードの処理を並行して実行できるので、レスポンスを改善できます。
例は下記になります。
メインスクリプト
1 2 3 4 5 |
var worker = new Worker('test.js'); worker.addEventListener('message', function(e) { console.log('Worker said: ', e.data); }, false); worker.postMessage('Hello World.'); |
test.js
1 2 3 |
self.addEventListener('message', function(e) { self.postMessage(e.data); }, false); |
Web Workersの対応を確認する方法
1 2 3 4 5 |
if (window.Worker){ // Workerの処理を記述 } else { window.alert("Web Workersが使用できません。"); } |
注意点としては利用できる機能やオブジェクトが制限されています。
またWeb Workersの独自機能としてJavaScriptファイルのインポートができます。
1 |
importScripts("sample1.js", "sample2.js"...); |
Tag:JavaScript