Worker

Интерфейс Worker из Web Workers API является представителем фоновой задачи, которая легко может быть создана и может передавать сообщения обратно создателю. Создание worker  - это вызов конструктора Worker() и задание скрипта, выполняемого в потоке worker.

Workers могут, в свою очередь, порождать новые workers, если эти workers расположены в одном каталоге с родительской страницей (Примечание: вложенные workers в настоящее время не поддерживаются в Blink).  Кроме того, workers могут использовать XMLHttpRequest для network I/O, при условии, что атрибуты responseXML и channel XMLHttpRequest всегда возвращают null.

Не все интерфейсы и функции могут быть использованы в скрипте, ассоциированном с Worker.

В Firefox, если вы хотите использовать workers в расширениях и хотели бы иметь доступ к js-ctypes, вам нужно использовать объект ChromeWorker.

Свойства

Наследует свойства родителя, EventTarget, и поддерживает свойства из AbstractWorker.

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

AbstractWorker.onerror (en-US)
EventListener вызываемый каждый раз, когда из воркера приходит ErrorEvent (en-US) с типом error. Это событие унаследовано от AbstractWorker.
Worker.onmessage
EventListener вызываемый каждый раз, когда из воркера приходит MessageEvent (en-US) с типом message — то есть когда сообщение было отправлено воркером в родительский документ с помощью DedicatedWorkerGlobalScope.postMessage (en-US). Сообщение передаётся в свойстве объекта события data (en-US).

Конструкторы

Worker()
Создаёт dedicated web worker, выполняющий скрипт, расположенный по указанному URL. Воркеры также могут быть созданы с использованием Blobs.

Методы

Наследует методы своего родителя, EventTarget, а также реализует методы AbstractWorker.

Worker.postMessage()
Отправляет сообщение — которое может являться любым JavaScript объектом — во внутреннюю область видимости воркера.
Worker.terminate()
Немедленно завершает выполнение воркера. Не даёт воркеру возможности завершить выполняемые операции; просто сразу останавливается. Экземпляры ServiceWorker не поддерживают этот метод.

Пример

Представленный фрагмент кода показывает создание объекта Worker с помощью конструктора Worker(), а также его использование:

var myWorker = new Worker("worker.js");

first.onchange = function() {
  myWorker.postMessage([first.value,second.value]);
  console.log('Message posted to worker');
}

For a full example, see ourBasic dedicated worker example (run dedicated worker).

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

Specification Status Comment
HTML Living Standard
Определение 'Worker' в этой спецификации.
Живой стандарт No change from Unknown.
Unknown
Определение 'Worker' в этой спецификации.
Неизвестно Изначальное определение.

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

Поддержка варьируется для разных видов воркеров. Для уточнения смотрите статьи по каждому типу воркеров.

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help! (en-US)
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 4 3.5 10.0 10.6 4
Feature Android Firefox Mobile (Gecko) Firefox OS (Gecko) IE Phone Opera Mobile Safari Mobile Chrome for Android
Basic support 4.4 3.5 1.0.1 10.0 11.5 5.1 ?

See also