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 представляет собой обработчик unsupported templ: event, который будет вызван когда произойдёт событие unsupported templ: event. Тип этого события MessageEvent и оно будет вызвано когда worker-объект получит сообщение из выполняемого им кода (т.е из метода DedicatedWorkerGlobalScope.postMessage .

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

Синтаксис

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 Standard
# event-message

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

BCD tables only load in the browser

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

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