単純な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関数をトリガーすると言えますか?