var worker = new SharedWorker("jsworker.js");
var worker = new SharedWorker("jsworker.js"); worker.port.addEventListener("message", function(e) { alert(e.data); }, false); worker.port.start(); // post a message to the shared web worker worker.port.postMessage("Alyssa");
var connections = 0; // count active connections self.addEventListener("connect", function (e) { var port = e.ports[0]; connections++; port.addEventListener("message", function (e) { port.postMessage("Hello " + e.data + " (port #" + connections + ")"); }, false); port.start(); }, false);
Les travailleurs partagés et les travailleurs du Web en JavaScript permettent tous deux le multi-threading, mais ils diffèrent dans leur portée et leur utilisation. Un travailleur Web est limité à la portée de l'onglet dans lequel il a été créé. Il ne peut pas communiquer avec d'autres onglets ou fenêtres. D'un autre côté, un travailleur partagé est accessible à partir de plusieurs scripts - même ceux qui sont exécutés sur différents onglets, fenêtres ou iframes, tant qu'ils sont dans le même domaine. Cela rend les travailleurs partagés idéaux pour les tâches qui nécessitent le partage de données et la communication entre les différents contextes de navigateur.
La création d'un travailleur partagé en JavaScript implique l'instance de l'objet partagé. Voici un exemple simple:
var mysharedWorker = new SharedWorker ('worker.js');
Dans cet exemple, «Worker.js» est le script que le travailleur partagé exécutera. Il est important de noter que le script doit être sur le même domaine que le script créant le travailleur partagé en raison de restrictions de stratégie d'origine même.
La communication avec un travailleur partagé est effectuée en utilisant la méthode postmesage et le gestionnaire d'événements OnMessage. La méthode de postMessage est utilisée pour envoyer des messages au travailleur partagé, tandis que le gestionnaire d'événements OnMessage est utilisé pour en recevoir des messages. Voici un exemple:
// Envoi d'un message au travailleur partagé
MysharedWorker.port.PostMessage ('Hello, Worker!');
// Recevoir un message du travailleur partagé
MysharedWorker.port.onMessage = Function (e) {
Console.Log ('' 'Message de Worker:' e.data);
};
Oui, l'une des principales caractéristiques des travailleurs partagés est leur capacité à partager des données entre différents onglets de navigateur, fenêtres ou iframes. Cela est possible car tous les scripts du même domaine ont accès à la même instance de travail partagée. Cela rend les travailleurs partagés idéaux pour les tâches qui nécessitent des mises à jour en temps réel sur plusieurs onglets ou fenêtres, tels que les applications d'édition collaboratives ou les jeux multi-tabs.
À partir de maintenant, les travailleurs partagés sont pris en charge dans la plupart des navigateurs modernes, y compris Google Chrome, Firefox et Safari. Cependant, ils ne sont pas pris en charge dans Internet Explorer. C'est toujours une bonne idée de vérifier les dernières informations de compatibilité du navigateur sur des sites Web comme puis-je utiliser ou MDN Web Docs.
Les travailleurs partagés ont un gestionnaire d'événements «OnError» qui peut être utilisé pour attraper et gérer toutes les erreurs qui se produisent lors de leur exécution. Voici un exemple:
mysharedworker.onerror = function (e) {
console.log ('Une erreur s'est produite:' e.Message);
};
Oui, les travailleurs partagés peuvent faire des demandes ajax. Ils ont accès à l'objet XMLHTTPRequest, qui peut être utilisé pour faire des demandes asynchrones à un serveur. Cela permet aux travailleurs partagés de récupérer des données à partir d'un serveur sans bloquer le thread principal, améliorant les performances de votre application Web.
Oui, les travailleurs partagés peuvent utiliser des lignes Web. Cela leur permet d'établir un canal de communication bidirectionnel avec un serveur, ce qui permet d'envoyer et de recevoir des données en temps réel sans avoir besoin de sondage.
Non, les travailleurs partagés ne peuvent pas accéder directement au DOM. En effet, ils s'exécutent dans un thread séparé et n'ont pas accès à la même portée que le thread principal. Cependant, ils peuvent envoyer des messages au thread principal, qui peuvent ensuite mettre à jour le DOM en fonction de ces messages.
Les travailleurs partagés peuvent être résiliés en appelant la méthode «terminer» sur l'objet SharedWorker. Cependant, il est important de noter que cela mettra immédiatement fin au travailleur partagé, qu'il ait terminé sa tâche actuelle. Voici un exemple:
MysharedWorker.terniate ();
Cela mettra immédiatement finira le travailleur partagé. C'est généralement une bonne idée de mettre fin à un travailleur partagé que s'il n'est plus nécessaire ou si cela cause des problèmes de performance.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!