Heim > Web-Frontend > js-Tutorial > So verwenden Sie in HTML5 freigegebene Web -Mitarbeiter von JavaScript -Webarbeitern

So verwenden Sie in HTML5 freigegebene Web -Mitarbeiter von JavaScript -Webarbeitern

Jennifer Aniston
Freigeben: 2025-03-04 01:01:10
Original
558 Leute haben es durchsucht

How to Use JavaScript Shared Web Workers in HTML5

So verwenden Sie in HTML5 freigegebene Web -Mitarbeiter von JavaScript -Webarbeitern

Wir haben kürzlich JavaScript -Webarbeiter besprochen unter Bezugnahme auf die „dedizierte“ Sorte. Wenn Sie es noch nicht gelesen haben, schlage ich vor, dass Sie dies zuerst tun - dieser Artikel baut auf denselben Konzepten auf.

Webarbeiter auf den Punkt gebracht

Ein Webarbeiter ist eine einzelne JavaScript -Datei, die im Hintergrund in einem separaten Thread geladen und ausgeführt wird. Dedizierte Webarbeiter sind mit ihrem Ersteller verknüpft (das Skript, das den Arbeiter geladen hat). Shared Web Workers ermöglichen es einer beliebigen Anzahl von Skripten, mit einem einzelnen Arbeiter zu kommunizieren. Freigegebene Webarbeiter halten die gleichen Regeln wie ihre dedizierten Gegenstücke: Kein DOM-, Dokument- oder Seiten-Skriptzugriff sowie eine begrenzte schreibgeschützte Berechtigung für die meisten Fenstereigenschaften. Darüber hinaus können Seitenskripte nur mit freigegebenen Webarbeitern aus derselben Herkunft/Domäne (Somesit.com) kommunizieren. Derzeit werden gemeinsame Webarbeiter in Chrome, Safari und Opera unterstützt. Firefox 4 und IE9 -Unterstützung können ankommen, aber wetten Sie nicht darauf. Shared -Arbeitnehmer können Ressourcen sparen, aber ein zusätzliches Maß an Komplexität hinzufügen. Erwarten Sie einige Probleme, z. B.,,
  • DOM2 -Ereignisse (AddEventListener) Handler scheinen die zuverlässigste Implementierung zu sein.
  • Sie werden mit ziemlicher Sicherheit auf dem Browser-spezifischen Macken stoßen, und das Debuggen ist schwierig. Der folgende Code funktioniert in der neuesten Version von Chrome, gehen Sie jedoch nicht davon aus, dass er in Safari oder Opera funktioniert.

Erstellen eines gemeinsam genutzten Webarbeiters

Um einen freigegebenen Webarbeiter zu erstellen, übergeben Sie einen JavaScript -Dateinamen an eine neue Instanz des SharedWorker -Objekts:
var worker = new SharedWorker("jsworker.js");
Nach dem Login kopieren

Kommunikation mit einem gemeinsamen Webarbeiter

Jedes Ihrer Seitenskripte kann mit dem freigegebenen Webarbeiter kommunizieren. Im Gegensatz zu engagierten Webarbeitern müssen Sie über ein "Port" -Objekt kommunizieren und einen Message Event -Handler anhängen. Außerdem müssen Sie den Start des Ports anrufen () Methode vor Verwendung der ersten Postmessage (): PageScript.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");
Nach dem Login kopieren
Wenn das Web Worker -Skript die erste Nachricht von einem Skript empfängt, muss es einen Ereignishandler an den aktiven Port hinzufügen. In den meisten Umständen wird der Handler eine eigene Post -Message () -Methode ausführen, um eine Nachricht an den aufrufenden Code zurückzugeben. Schließlich muss die Start () -Methode des Ports auch ausgeführt werden, um Nachrichten zu aktivieren: JsWorker.js:
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);
Nach dem Login kopieren
Wie ihre engagierten Geschwister können gemeinsame Webarbeiter:
  • Weitere Skripte mit Importscripts ()
  • Laden
  • Fehlerhandler anhängen und
  • Führen Sie die Methode port.close () aus, um eine weitere Kommunikation auf einem bestimmten Port zu verhindern.
Shared Web Workers werden wahrscheinlich einige Jahre lang keine tragfähige Technologie sein, aber sie bieten aufregende Möglichkeiten für die Zukunft der JavaScript -Entwicklung. Hoffen wir, dass Browser -Anbieter ein paar anständige Tracing- und Debugging -Tools liefern können!

häufig gestellte Fragen (FAQs) zu JavaScript Shared Web Workers

Was ist der Hauptunterschied zwischen gemeinsam genutzten Arbeitnehmern und Webarbeitern in JavaScript? Ein Webarbeiter ist auf den Umfang der Registerkarte beschränkt, in der er erstellt wurde. Es kann nicht mit anderen Registerkarten oder Fenstern kommunizieren. Andererseits kann ein gemeinsamer Mitarbeiter aus mehreren Skripten zugegriffen werden - selbst diejenigen, die auf verschiedenen Registerkarten, Fenstern oder Iframes ausgeführt werden, solange sie sich in derselben Domäne befinden. Dies macht freigegebene Arbeitnehmer ideal für Aufgaben, bei denen der Datenaustausch und die Kommunikation zwischen verschiedenen Browser -Kontexten erforderlich sind. Hier ist ein einfaches Beispiel:

var mysharedworker = new Sharedworker ('Worker.js'); Es ist wichtig zu beachten, dass das Skript aufgrund der gleichorientierten Richtlinienbeschränkungen auf derselben Domäne wie das Skript der gemeinsame Arbeiter erstellt wird. Die Postmessage -Methode wird verwendet, um Nachrichten an den freigegebenen Mitarbeiter zu senden, während der OnMessage -Ereignishandler verwendet wird, um Nachrichten daraus zu empfangen. Hier ist ein Beispiel:

// Senden einer Nachricht an den freigegebenen Arbeiter

mySharedworker.port.PostMessage ('Hallo, Arbeiter!'); E.Data); Dies ist möglich, da alle Skripte aus derselben Domäne Zugriff auf die gleiche gemeinsame Arbeiterinstanz haben. Dies macht gemeinsame Mitarbeiter ideal für Aufgaben, die in mehreren Registerkarten oder Fenstern Echtzeit-Updates erfordern, wie z. B. kollaborative Bearbeitungs-Apps oder Multitab-Spiele. Sie werden jedoch im Internet Explorer nicht unterstützt. Es ist immer eine gute Idee, die neuesten Browser -Kompatibilitätsinformationen auf Websites wie Can I verwenden oder MDN -Webdokumente zu überprüfen.

Wie kann ich Fehler bei gemeinsamen Arbeitnehmern umgehen? Hier ist ein Beispiel:

mySharedworker Sie haben Zugriff auf das XMLHTTPrequest -Objekt, mit dem ein Server asynchrone Anforderungen an einen Server gestellt werden kann. Auf diese Weise können freigegebene Mitarbeiter Daten von einem Server abrufen, ohne den Hauptthread zu blockieren und die Leistung Ihrer Webanwendung zu verbessern.

Können freigegebene Mitarbeiter Websockets verwenden? Auf diese Weise können sie einen Zwei-Wege-Kommunikationskanal mit einem Server einrichten, sodass Daten in Echtzeit in Echtzeit gesendet und empfangen werden können. Dies liegt daran, dass sie in einem separaten Thread ausgeführt werden und keinen Zugriff auf denselben Bereich wie der Hauptfaden haben. Sie können jedoch Nachrichten an den Hauptthread senden, der dann die DOM basierend auf diesen Nachrichten aktualisieren kann. Es ist jedoch wichtig zu beachten, dass dies den gemeinsam genutzten Arbeitnehmer sofort kündigt, unabhängig davon, ob er seine aktuelle Aufgabe beendet hat. Hier ist ein Beispiel:

mySharedworker.terminate (); Es ist im Allgemeinen eine gute Idee, einen gemeinsamen Mitarbeiter nur zu beenden, wenn er nicht mehr benötigt wird oder wenn er Leistungsprobleme verursacht.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie in HTML5 freigegebene Web -Mitarbeiter von JavaScript -Webarbeitern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage