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 (en-US).

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

AbstractWorker.onerror (en-US)

EventListener (en-US) вызываемый каждый раз, когда из воркера приходит ErrorEvent (en-US) с типом error. Это событие унаследовано от AbstractWorker (en-US).

Worker.onmessage

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

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

Worker()

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

Методы

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

Worker.postMessage()

Отправляет сообщение — которое может являться любым JavaScript объектом — во внутреннюю область видимости воркера.

Worker.terminate()

Немедленно завершает выполнение воркера. Не даёт воркеру возможности завершить выполняемые операции; просто сразу останавливается. Экземпляры ServiceWorker не поддерживают этот метод.

Пример

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

js
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
HTML Standard
# dedicated-workers-and-the-worker-interface

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

BCD tables only load in the browser

See also