0

HTML5 WebWorkersは非常に有望に見えますが、現時点ではIE8ではサポートされていません。私はビジネスSaasを構築しており、このブラウザを少なくともさらに2年間サポートする必要があります。

Webワーカースレッドの実装を開始してIE8で実行するとどうなりますか?単一のスレッドで実行されるだけでしょうか、それともまったく機能しないのでしょうか。

ありがとう。

4

2 に答える 2

7

Webワーカーを作成するためのAPIがIEに存在しないため、エラーが発生します。

例えば

var worker = new Worker('my_task.js'); 

ワーカーが定義されていないため、エラーがスローされます。

機能の検出を行う場合は、ワーカーを作成する前に最初に確認できます。

if(window.Worker !== undefined){
   var worker = new Worker('my_task.js'); 
}

もちろん、Webworkerに委任したタスクは、サポートされていないブラウザーでは実行されません。つまり、プライマリ(非ワーカー)コンテキストでロジックを実行する必要があります。

WebWorkersにメッセージを投稿する(そしてWebWorkersからのイベント/メッセージをリッスンする)ので、ワーカータスクに対して同じアプローチに従うと、プライマリコンテキストで実行し、同じ方法で呼び出すことができます。ウェブワーカーでした。これには、追加の作業が必要になりますが、この方法では、ブラウザーでサポートされていることを検出したときに、WebWorkersに簡単に切り替えることができます。

于 2012-05-08T18:47:12.357 に答える
5

IE <10のWebワーカーのダミー実装を提供するプロジェクトがあります。http ://code.google.com/p/ie-web-worker/ APIはと同じですが、実行はシングルスレッドです。

正常に動作しますが、このライブラリに関する問題が1つ見つかりました。ワーカーのコードはすぐに実行されます

var worker = new Worker('myworker.js');

と呼ばれます。現時点ではありません

worker.onmessage = function {...}

が設定されているため、ワーカーからメインコードにメッセージを送信できません。したがって、メッセージがメインコードからワーカーに送信される前ではなく、ワーカーコードを開始する必要がある場合があります。

worker.postMessage('start');
于 2013-07-09T10:08:21.923 に答える