Worker.onmessage

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.

Свойство onmessage интерфейса Worker представляет собой обработчик event handler, который будет вызван когда произойдёт событие message. Тип этого события MessageEvent и оно будет вызвано когда worker-объект получит сообщение из выполняемого им кода (т.е из метода DedicatedWorkerGlobalScope.postMessage .

Примечание: Данные события доступны в свойстве data события message.

Синтаксис

js
myWorker.onmessage = function(e) { ... }

Пример

Следующий пример кода показывает создание объекта Worker используя конструктор Worker(). События попадают в объект, когда значение внутри поля ввода формы first изменяется. Обработчик onmessage указан для обработки сообщений, которые приходят назад из кода объекта в текущий контекст выполнения.

js
var myWorker = new Worker("worker.js");

first.onchange = function () {
  myWorker.postMessage([first.value, second.value]);
  console.log("Сообщение, отправленное в worker-объект");
};

myWorker.onmessage = function (e) {
  result.textContent = e.data;
  console.log("Сообщение полученное из worker-объекта");
};

В скрипте worker.js, обработчик onmessage используется для обработки событий, полученных из главного скрипта:

js
onmessage = function (e) {
  console.log("Сообщение полученное из главного скрипта");
  var workerResult = "Результат: " + e.data[0] * e.data[1];
  console.log("Отправка сообщения назад в главный скрипт");
  postMessage(workerResult);
};

Посмотрите как в скрипте worker.js вызывается обработчик onmessage. В нем присутствует только глобальное свойство onmessage, потому что worker-объект фактически является областью видимости (DedicatedWorkerGlobalScope).

Для полного примера смотрите наш Basic dedicated worker example (run dedicated worker).

Спецификации

Specification
HTML
# event-message

Совместимость с браузерами

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
message event

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support

Смотрите также

Интерфейс Worker, которому принадлежит этот обработчик.