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

Worker

Worker

фоновый поток выполнения (EventTarget)

Объект Worker представляет фоновый поток выполнения. Создать новый объект Worker можнос помощью конструктора Worker(), передав ему URL-адрес файла с программным кодом на языке JavaScript. Прогрaммный код в этом файле может использовать синхронные прикладные интерфейсы или выполнять продолжительные вычисления, не оказывая влияния на главный поток выполнения. Фоновые потоки работают в отдельном контексте выполнения (см. WorkerGlobalScope), и обмен данными с фоновым потоком выполнения возможен только через механизм асинхронных событий. Отправить данные фоновому потоку можно вызовом метода postMessage(), а получить - с помощью обработчика события «message».

Введение в фоновые потоки выполнения приводится в разделе 22.4.

Конструктор

new Worker(string scriptURL)

Создает новый объект Worker и запускает JavaScript-сценарий, находящийся по адресу scriptURL.

Методы

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

Отправляет сообщение message фоновому потоку выполнения, котоpый получит его в виде объекта MessageEvent, в обработчике onmessage. Аргумент message может быть простым значением, объектом или массивом, но не функцией. Допускается передавать такие объекты клиентского JavaScript, как ArrayBuffer, File, Blob и ImageData, но узлы, такие как Document и Element, передавать нельзя (подробности приводятся во врезке «Структурированные копии» в главе 22).

Необязательный аргумент ports позволяет указать один или более прямых каналов связи с объектом Worker. Например, если имеются два объекта Worker, можно обеспечить прямое взаимодействие между ними, передав их конструкторам концы соединения MessageChannel.

void terminate()

Останавливает фоновый поток выполнения и прерывает работу сценария в нем.

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

Поскольку фоновые потоки выполняются в окружении, отличном от окружения, создавшего их, они могут взаимодействовать с родительским потоком только посредством событий. Обработчики этих событий можно зарегистрировать с помощью свойств, перечисленных ниже, или с помощью методов интерфейса EventTarget.

onerror

Когда в сценарии, выполняемом в фоновом потоке, возбуждается исключение и это исключение не обрабатывается обработчиком onerror объекта WorkerGlobalScope, генерируется событие «error» в объекте Worker. Обработчику этого события передается объект ErrorEvent. Событие «error» не всплывает. Если данный фоновый поток выполнения запущен другим фоновым потоком, отмена события «error» предотвратит его передачу родительскому фоновому потоку. Если объект Worker создан в главном потоке выполнения, отмена события может предотвратить вывод сообщения в консоли JavaScript.

onmessage

Когда сценарий, выполняемый в фоновом потоке, вызовет свою глобальную функцию postMessage() (см. WorkerGlobalScope), в объекте Worker будет сгенерировано событие «message». Обработчику события будет передан объект MessageEvent, свойство data которого будет содержать копию значения, переданного сценарием из фонового потока выполнения методу postMessage().

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


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