2

単純なHTML5Webワーカープロジェクトで、HTML5メッセージングAPIを使用してメッセージを交換するWebワーカーを定義しました。2つの.onmessageハンドラー(コールバック関数)を定義したため、ここで混乱の原因があります。1つはメインスクリプトに、もう1つはworker.jsにあります。index.html:

<!DOCTYPE html>
<html>
<body>
<script>
var worker = new Worker("worker.js");
worker.onmessage = function(event) {
    alert("Reply from index.html:"+event.data);
}
worker.postMessage("message 3,");
</script>
</body>
</html>

worker.js:

this.onmessage = function(event) {
    postMessage("message 0,"+event.data);
} 
postMessage("message 1,");

私が得られないことの1つは、表示されるメッセージの順序です。最初にこれを表示します: ここに画像の説明を入力してください 次にこれを表示します ここに画像の説明を入力してください

しかし、なぜ?これらのハンドラーがいつどのように呼び出されたか混乱していますか?最初にworker.postMessage( "メッセージ3、"); worker.postMessage( "message 3、");をトリガーします。worker.jsおよびpostMessage( "message 0、" + event.data); inは、メインスクリプトでworker.onmessage = function(event)をトリガーします。そして最後にpostMessage( "message 1、"); worker.jsから、メインスクリプト(index.html)のonmessageがトリガーされます。ワーカーに対するpostMessage呼び出しが、他のWebワーカーのonmessage関数をトリガーすると言えますか?

4

1 に答える 1

1

Web Workerの実装を、オブジェクトを関数として渡す可能性のあるjsメソッドと混同している可能性があります。HTML5のWEBWORKERSは、THREADINGをJAVASCRIPTにもたらしています。

理由は「.onmessage」の追加イベントにあるようで、worker.js 投稿された式「postMessage( "message 0、" + event.data);」で始まります。。そのmessage 0理由で最初に来る。

次のような優れた入門チュートリアルでは、懸念事項に対処する必要があります-Webワーカーの基本。

于 2013-01-11T00:55:34.423 に答える