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
.
Синтаксис
myWorker.onmessage = function(e) { ... }
Пример
Следующий пример кода показывает создание объекта Worker
используя конструктор Worker()
. События попадают в объект, когда значение внутри поля ввода формы first
изменяется. Обработчик onmessage указан для обработки сообщений, которые приходят назад из кода объекта в текущий контекст выполнения.
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
используется для обработки событий, полученных из главного скрипта:
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
, которому принадлежит этот обработчик.