HTML5 WebWorkersは非常に有望ですが、現時点ではIE8でサポートされていません。私はSaasというビジネスを構築しています。私はこのブラウザを少なくとももう2年間はサポートしなければなりません。IE8のjavascriptマルチスレッドWebWork
ウェブワーカースレッドを実装してIE8で実行した場合、どうなりますか?それは単なるスレッドで動作するのだろうか、まったく動作しないのだろうか?
ありがとうございました。
HTML5 WebWorkersは非常に有望ですが、現時点ではIE8でサポートされていません。私はSaasというビジネスを構築しています。私はこのブラウザを少なくとももう2年間はサポートしなければなりません。IE8のjavascriptマルチスレッドWebWork
ウェブワーカースレッドを実装して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に簡単に切り替えることができます。
IE用のWebワーカーのダミー実装を提供するプロジェクトがあります< 10:http://code.google.com/p/ie-web-worker/ APIは同じですが、実行はシングルスレッドです。
正常に動作しますが、このlibに関する1つの問題が見つかりました。作業者のコードは、
var worker = new Worker('myworker.js');
が呼び出されるとすぐに実行されます。現時点では、
worker.onmessage = function {...}
が設定されており、メッセージをワーカーからメインコードに送信できません。したがって、メインコードからワーカーにメッセージが送信される前ではなく、ワーカーコードを開始する必要があります。
worker.postMessage('start');
ワーカーが非常にプロセス集中的であれば、現在のようにページの実行を停止します。 (例えば。10,000のオブジェクト配列をループする) – Ray
試しましたか?何が起こった? – epascarello
試していない、それはその段階ではない。私がしたら何が起こるかを見ているだけです。あなたはそれを試しましたか? – frenchie
デモを行うのに40秒かかります!またはデモの1つをオンラインでテストします。 :) – epascarello