Worker: event message

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.

Note: This feature is available in Web Workers, except for Service Workers.

Event message được kích hoạt trên một đối tượng Worker khi cha của worker nhận được thông điệp từ worker của nó (tức là, khi worker gửi thông điệp bằng DedicatedWorkerGlobalScope.postMessage()).

Event này không thể hủy và không nổi bọt.

Cú pháp

Sử dụng tên event trong các phương thức như addEventListener(), hoặc thiết lập một thuộc tính event handler.

js
addEventListener("message", (event) => { })

onmessage = (event) => { }

Loại event

Một MessageEvent. Kế thừa từ Event.

Event MessageEvent

Thuộc tính event

Giao diện này cũng kế thừa các thuộc tính từ cha, Event.

MessageEvent.data Read only

Dữ liệu được gửi bởi người phát thông điệp.

MessageEvent.origin Read only

Một chuỗi đại diện cho nguồn gốc của người phát thông điệp.

MessageEvent.lastEventId Read only

Một chuỗi đại diện cho ID duy nhất cho event.

MessageEvent.source Read only

Một MessageEventSource (có thể là một đối tượng WindowProxy, MessagePort, hoặc ServiceWorker) đại diện cho người phát thông điệp.

MessageEvent.ports Read only

Một mảng các đối tượng MessagePort đại diện cho các cổng liên kết với kênh mà thông điệp đang được gửi qua (nếu phù hợp, ví dụ: trong channel messaging hoặc khi gửi thông điệp tới một shared worker).

Ví dụ

Mã này tạo một worker mới và lắng nghe các thông điệp từ nó bằng addEventListener():

js
const worker = new Worker("static/scripts/worker.js");

worker.addEventListener("message", (event) => {
  console.log(`Received message from worker: ${event.data}`);
});

Ngoài ra, nó có thể lắng nghe bằng thuộc tính event handler onmessage:

js
const worker = new Worker("static/scripts/worker.js");

worker.onmessage = (event) => {
  console.log(`Received message from worker: ${event.data}`);
};

Worker gửi thông điệp bằng self.postMessage():

js
// static/scripts/worker.js

self.postMessage("I'm alive!");

Đặc tả kỹ thuật

Specification
HTML
# event-message

Tương thích trình duyệt

Xem thêm