2012-05-08 3 views
0

HTML5 WebWorkersは非常に有望ですが、現時点ではIE8でサポートされていません。私はSaasというビジネスを構築しています。私はこのブラウザを少なくとももう2年間はサポートしなければなりません。IE8のjavascriptマルチスレッドWebWork

ウェブワーカースレッドを実装してIE8で実行した場合、どうなりますか?それは単なるスレッドで動作するのだろうか、まったく動作しないのだろうか?

ありがとうございました。

+0

試しましたか?何が起こった? – epascarello

+0

試していない、それはその段階ではない。私がしたら何が起こるかを見ているだけです。あなたはそれを試しましたか? – frenchie

+1

デモを行うのに40秒かかります!またはデモの1つをオンラインでテストします。 :) – epascarello

答えて

6

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

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

ワーカーが定義されていないため、エラーが発生します。

あなたが特徴の検出を行いたい場合は、労働者を作成する前に、まず確認することができます。もちろん

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

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

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

+0

大丈夫、答えに感謝;私はIE8がもう少しでなくなるまで、ウェブワーカーから遠ざかります。ありがとう。 – frenchie

+0

@frenchieあなたはそれらから完全に遠ざかる必要はありません。ただあなたの問題を知的に解決しなければなりません。 WebWorkerクラス用の同じAPIを、ワーカーとして使用する場合と同様に構築します。それを同じように呼び出すなど。そうすれば、ブラウザのサポートを検出してもそれを使うことができます。 – Matt

+0

また、WebWorkersはIE9でもサポートされていませんので、待つつもりなら待ってください長い間。 – Matt

5

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'); 
+0

ワーカーが非常にプロセス集中的であれば、現在のようにページの実行を停止します。 (例えば。10,000のオブジェクト配列をループする) – Ray

関連する問題