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
.
Конструкторы
Методы
Наследует методы своего родителя, 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 |
---|
HTML Standard # dedicated-workers-and-the-worker-interface |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- Using web workers
- Functions available to workers
- Другие типы воркеров:
SharedWorker
и ServiceWorker. - Non-standard, Gecko-specific workers:
ChromeWorker
, used by extensions.