From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- files/ru/web/api/worker/onmessage/index.html | 124 +++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 files/ru/web/api/worker/onmessage/index.html (limited to 'files/ru/web/api/worker/onmessage') diff --git a/files/ru/web/api/worker/onmessage/index.html b/files/ru/web/api/worker/onmessage/index.html new file mode 100644 index 0000000000..86db26c45f --- /dev/null +++ b/files/ru/web/api/worker/onmessage/index.html @@ -0,0 +1,124 @@ +--- +title: Worker.onmessage +slug: Web/API/Worker/onmessage +translation_of: Web/API/Worker/onmessage +--- +

{{APIRef("Web Workers API")}}

+ +

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

+ +
+

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

+
+ +

Синтаксис

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

Пример

+ +

Следующий пример кода показывает создание объекта {{domxref("Worker")}} используя конструктор {{domxref("Worker.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-объект фактически является областью видимости ({{domxref("DedicatedWorkerGlobalScope")}}).

+ +

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

+ +

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

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('HTML WHATWG', "#handler-worker-onmessage", "Worker.onmessage")}}{{Spec2('HTML WHATWG')}}Никаких изменений из {{SpecName("Web Workers")}}.
{{SpecName('Web Workers', "#handler-worker-onmessage", "Worker.onmessage")}}{{Spec2('Web Workers')}}Начальное определение.
+ +

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

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ФункциональностьChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка43.510.010.64
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ФункциональностьAndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка4.43.51.0.110.011.55.1
+
+ +

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

+ +

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

-- cgit v1.2.3-54-g00ecf