Книга: JavaScript. Подробное руководство, 6-е издание

MessagePort

MessagePort

передает асинхронные сообщения (EventTarget)

Объект MessagePort используется для передачи асинхронных сообщений в виде событий, обычно между различными контекстами выполнения, такими как окна или фоновые потоки выполнения. Объекты MessagePort должны использоваться в виде связанных пар: см. MessageChannel. Вызов метода postMessage() объекта MessagePort генерирует событие «message» в связанном с ним объекте MessagePort. Прикладной интерфейс обмена меж доменными сообщениями (раздел 22.3) и фоновые потоки выполнения (раздел 22.4) также взаимодействуют с использованием объектов postMessage() и событий message. Эти прикладные интерфейсы фактически неявно используют объект MessagePort. Явное использование объектов MessageChannel и MessagePort позволяет создавать дополнительные, частные каналы обмена данными и может применяться, например, для организации непосредственных взаимодействий двух соседних фоновых потоков выполнения.

Типы MessageChannel и MessagePort являются нововведением, появившимся в спецификации HTML5, и на момент написания этих строк некоторые броузеры поддерживали меж доменный обмен сообщениями (раздел 22.3) и фоновые потоки выполнения (раздел 22.4) без применения частных каналов связи на основе объектов MessagePort.

Методы

void close()

Отключает данный объект MessagePort от порта, к которому он был подключен (если таковой имеется). Последующие вызовы метода postMessage() не будут иметь никакого эффекта, и в будущем сообщения «message» приходить не будут.

void postMessage(any message, [MessagePort[] ports])

Отправляет копию сообщения message через порт и передает его в форме события «message» порту, с которым соединен данный порт. Если указан аргумент ports, его значение также будет доставлено вместе с событием «message». Аргумент message может иметь любое значение, совместимое с алгоритмом структурированного копирования (врезка «Структурированные копии» в главе 22).

void start()

Запускает механизм возбуждения событий «message» в объекте MessagePort. До вызова этого метода все данные, отправляемые через порт, будут сохраняться в буфере. Подобная задержка событий позволяет сценариям зарегистрировать все обработчики событий до того, как будет отправлено хоть одно сообщение. Имейте, однако, в виду, что вызывать этот метод необходимо только при использовании метода addEventListener() интерфейса EventTarget. Если сценарий регистрирует обработчик посредством свойства onmessage, метод start() будет вызван неявно.

Обработчики событий

onmessage

Это свойство определяет обработчик событий «message». События «message» генерируются в объекте MessagePort. Они не всплывают, и для них не предусматривается действий по умолчанию. Обратите внимание, что при установке этого свойства вызывается метод start(), который запускает механизм возбуждения событий «message».

Оглавление книги


Генерация: 1.409. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз