2 votes

HTML5 Messaging API et l'ordre des messages lors de l'utilisation de web workers

Dans un projet simple de travailleur web HTML5, j'ai défini un travailleur web qui échange des messages en utilisant l'API de messagerie HTML5. Il y a une source de confusion pour moi car nous avons défini deux gestionnaires .onmessage (fonctions de rappel), l'un dans le script principal et l'autre dans le 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,");

je ne comprends pas l'ordre d'affichage des messages ! Il affiche d'abord ceci : enter image description here et affiche ensuite ceci enter image description here

Mais pourquoi ? Je ne comprends pas comment et quand ces gestionnaires ont été appelés ? d'abord le worker.postMessage("message 3,") ; déclenche le worker.postMessage("message 3,") ; dans worker.js et postMessage("message 0, "+event.data) ; dans returns déclenche le worker. onmessage = function(event) dans le script principal ! puis à la toute fin le postMessage("message 1,") ; du worker.js déclenche le onmessage du script principal (index.html). Pouvons-nous dire que tout appel postMessage sur un worker déclenche la fonction onmessage d'autres web workers ?

1voto

ElYusubov Points 4165

Il se peut que vous confondiez l'implémentation du Web Worker avec les méthodes js auxquelles vous pouvez passer les objets en tant que fonction. Les WEB WORKERS en HTML5 apportent le THREADING AU JAVASCRIPT.

La raison semble se trouver dans l'événement append de '.onmessage' et votre worker.js commence par l'expression postée "postMessage("message 0, "+event.data) ;" . L'expression message 0 est prioritaire pour cette raison.

Un bon tutoriel d'introduction comme celui qui suit devrait répondre à vos préoccupations - LES BASES DES TRAVAILLEURS WEB .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X