2014/07/01

[JavaScript]webworkerのajaxについて

webworkをちょっと使ってみようかなーっと思ったんだけど、ウェブ ワーカーの基本を読むと、以下にはアクセスできるようだ。

navigator オブジェクト
location オブジェクト(読み取り専用)
XMLHttpRequest
setTimeout()/clearTimeout() と setInterval()/clearInterval()
importScripts() メソッドを使った外部スクリプトのインポート
逆にアクセスできないのは、下記のようです。
DOM(非スレッドセーフ)
window オブジェクト
document オブジェクト
parent オブジェクト
ajaxの通信ができるってことは、webworker経由でajaxを通信したほうが、別スレッドでかつ非同期で一番早いんじゃないのかなと思った。

ちょうど、こんな感じ。
self.addEventListener('message', function(e) {
  request = new XMLHttpRequest();
  request.open('GET', './hoge', true);
  request.addEventListener('load', function(event){
    self.postMessage(event);
  }, false);
  request.send();
}, false);
で、同じ検証を、ibmのWeb Workers を使用して Web アプケーションのユーザビリティーを高めるに書かれていた。

結果からいうと、メインスレッドでajaxを呼び出したほうがいいとのこと(もちろんケースバイケースだとは思うんだけど。)。

理由としては、ワーカーを起動する時間がかかってしまっているからだそうです。

なので、やっぱり、重たい処理をワーカーに渡すのがベストなのかもしれないなと。

0 コメント:

コメントを投稿