Worker.onmessage

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

Примечание: Данные события доступны в свойстве 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 (en-US)).

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

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

Specification
HTML Standard
# event-message

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

BCD tables only load in the browser

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

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