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, которому принадлежит этот обработчик.