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
EventListener вызываемый каждый раз, когда из воркера приходит ErrorEvent с типом error. Это событие унаследовано от AbstractWorker.
Worker.onmessage
EventListener вызываемый каждый раз, когда из воркера приходит MessageEvent с типом message — то есть когда сообщение было отправлено воркером в родительский документ с помощью DedicatedWorkerGlobalScope.postMessage. Сообщение передаётся в свойстве объекта события data.

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

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
WHATWG HTML Living Standard
Определение 'Worker' в этой спецификации.
Живой стандарт No change from Web Workers.
Web Workers
Определение 'Worker' в этой спецификации.
Редакторский черновик Изначальное определение.

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

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

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

Метки документа и участники

 Внесли вклад в эту страницу: sgrogov, Helen4gu
 Обновлялась последний раз: sgrogov,