Worker: message-Ereignis
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Hinweis: Dieses Feature ist verfügbar in Web Workers, außer in Service Workers.
Das message
-Ereignis wird auf einem Worker
-Objekt ausgelöst, wenn der übergeordnete Prozess des Workers eine Nachricht von seinem Worker erhält (d. h. wenn der Worker eine Nachricht mit DedicatedWorkerGlobalScope.postMessage()
sendet).
Dieses Ereignis kann nicht abgebrochen werden und blubbert nicht.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
oder setzen Sie eine Ereignis-Handler-Eigenschaft.
addEventListener("message", (event) => {});
onmessage = (event) => {};
Ereignistyp
Ein MessageEvent
. Erbt von Event
.
Ereigniseigenschaften
Diese Schnittstelle erbt auch Eigenschaften von ihrem Elternteil, Event
.
MessageEvent.data
Nur lesbar-
Die vom Nachrichtenemitter gesendeten Daten.
MessageEvent.origin
Nur lesbar-
Ein String, der den Ursprung des Nachrichtenemitters darstellt.
MessageEvent.lastEventId
Nur lesbar-
Ein String, der eine eindeutige ID für das Ereignis darstellt.
MessageEvent.source
Nur lesbar-
Ein
MessageEventSource
(das ein WindowProxy,MessagePort
oderServiceWorker
-Objekt sein kann), das den Nachrichtenemitter darstellt. MessageEvent.ports
Nur lesbar-
Ein Array von
MessagePort
-Objekten, das die mit dem Kanal verbundenen Ports darstellt, über den die Nachricht gesendet wird (wo zutreffend, z. B. beim Channel Messaging oder beim Senden einer Nachricht an einen geteilten Worker).
Beispiele
Dieser Code erstellt einen neuen Worker und lauscht Nachrichten von ihm unter Verwendung von addEventListener()
:
const worker = new Worker("static/scripts/worker.js");
worker.addEventListener("message", (event) => {
console.log(`Received message from worker: ${event.data}`);
});
Alternativ könnte er über die onmessage
-Ereignis-Handler-Eigenschaft lauschen:
const worker = new Worker("static/scripts/worker.js");
worker.onmessage = (event) => {
console.log(`Received message from worker: ${event.data}`);
};
Der Worker sendet Nachrichten mit self.postMessage()
:
// static/scripts/worker.js
self.postMessage("I'm alive!");
Spezifikationen
Specification |
---|
HTML Standard # event-message |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Verwandte Ereignisse:
messageerror
. DedicatedWorkerGlobalScope.postMessage()
.