HTML5 WebWorkersは非常に有望に見えますが、現時点ではIE8ではサポートされていません。私はビジネスSaasを構築しており、このブラウザを少なくともさらに2年間サポートする必要があります。
Webワーカースレッドの実装を開始してIE8で実行するとどうなりますか?単一のスレッドで実行されるだけでしょうか、それともまったく機能しないのでしょうか。
ありがとう。
HTML5 WebWorkersは非常に有望に見えますが、現時点ではIE8ではサポートされていません。私はビジネスSaasを構築しており、このブラウザを少なくともさらに2年間サポートする必要があります。
Webワーカースレッドの実装を開始してIE8で実行するとどうなりますか?単一のスレッドで実行されるだけでしょうか、それともまったく機能しないのでしょうか。
ありがとう。
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に簡単に切り替えることができます。
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');