Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. Интерфейсы веб API
  3. Web Workers API

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

Web Workers API

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

Концепции и использование Web воркеров

Worker (работник, воркер) - это объект созданный при помощи конструктора (например,Worker()), который запускает именованный файл JavaScript - этот файл содержит код, который будет запускаться в потоке воркера; воркеры запускаются в другом глобальном контексте отличном от текущего контекстаwindow. Этот контекст представлен объектомDedicatedWorkerGlobalScope в случае специализированных воркеров (стандартные воркеры, которые используются одним скриптом, общие воркеры используютSharedWorkerGlobalScope).

Вы можете запустить любой код, который вам нравится внутри потока воркера, за некоторыми исключениями. Например, вы не можете напрямую манипулировать DOM внутри воркера или использовать некоторые методы и свойства по умолчанию объектаwindow. Но вы можете использовать большое количество свойств и методов, доступных вwindow, включаяWebSockets, и механизм хранения данных такой, какIndexedDB илиData Store API, который доступен только в ОС Firefox. За дополнительной информацией смотритеФункции и классы доступные воркерам.

Данные отправляются между потоком воркера и основным потоком через систему сообщений - обе стороны отправляют свои сообщения с помощью методаpostMessage () и отвечают на сообщения через обработчик событияonmessage (сообщение содержится в атрибуте данных событияMessage. Данные копируются, а не используются совместно.

Воркеры могут, в свою очередь, создавать новых воркеров, в этом случае они должны иметь одно и то же происхождение - родительскую страницу. Кроме того, воркеры могут использоватьXMLHttpRequest для сетевого ввода-вывода, за исключением того, что атрибутыresponseXML иchannel на XMLHttpRequest всегда возвращают значениеnull.

В дополнение к специализированным существуют и другие виды воркеров:

  • Совместные воркеры - это воркеры, которые могут использоваться несколькими скриптами совместно, работающими в разных окнах, IFrames и т.д. в пределах одного домена, что и воркер. Они немного сложнее, чем специализированные воркеры - скрипты должны связываться через активный порт. Подробнее см.SharedWorker.
  • ServiceWorkers по сути действуют как прокси-серверы, которые находятся между веб-приложениями, а также браузером и сетью (если доступны). Помимо прочего они предназначены для создания эффективного автономного взаимодействия, перехвата сетевых запросов и принятия соответствующих мер на основе доступности сети и обновления данных на сервере. Они также позволят доступ к push-уведомлениям и API-интерфейсам фоновой синхронизации.
  • Воркеры в Chrome - это воркеры специального типа Firefox, которые вы можете использовать, если вы разрабатываете надстройки и хотите использовать воркеры в расширениях и иметь доступ к js-ctypes в вашем воркере. Смотрите такжеChromeWorker.
  • Audio Workers(аудио воркеры) обеспечивают возможность прямой обработки аудиозаписей в рамках веб-контекста воркера.

Примечание:В соответствии сWeb workers Spec, события ошибок воркеров не должны "всплывать" (смотритеFirefox bug 1188141. Такое поведение было реализовано в Firefox 42.

Интерфейсы Web воркера

AbstractWorker

Абстрактные свойства и методы общие для всех типов воркеров (т.е.Worker илиSharedWorker).

Worker

Представляет поток исполнения воркера, позволяющий передавать сообщения текущему коду воркера.

SharedWorker

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

WorkerGlobalScope

Represents the generic scope of any worker (doing the same job asWindow does for normal web content). Different types of worker have scope objects that inherit from this interface and add more specific features.

DedicatedWorkerGlobalScope

Represents the scope of a dedicated worker, inheriting fromWorkerGlobalScope and adding some dedicated features.

SharedWorkerGlobalScope

Represents the scope of a shared worker, inheriting fromWorkerGlobalScope and adding some dedicated features.

WorkerNavigator

Представляет идентификатор и состояние пользовательского агента (клиента).

Примеры

Мы создали пару простых демонстрационных программ чтобы показать основы использования:

Больше информации о том, как работают эти демонстрационные программы, вы можете найти в статьеИспользование Web воркеров.

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

Specification
HTML Living Standard # workers

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp