From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- files/ru/web/api/web_workers_api/index.html | 223 ++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100644 files/ru/web/api/web_workers_api/index.html (limited to 'files/ru/web/api/web_workers_api/index.html') diff --git a/files/ru/web/api/web_workers_api/index.html b/files/ru/web/api/web_workers_api/index.html new file mode 100644 index 0000000000..706dab35cb --- /dev/null +++ b/files/ru/web/api/web_workers_api/index.html @@ -0,0 +1,223 @@ +--- +title: Web Workers API +slug: Web/API/Web_Workers_API +tags: + - API + - NeedsTranslation + - Service Workers + - Shared Workers + - TopicStub + - Web Workers + - Workers +translation_of: Web/API/Web_Workers_API +--- +

{{DefaultAPISidebar("Web Workers API")}}

+ +

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

+ +

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

+ +

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

+ +

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

+ +

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

+ +

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

+ +

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

+ + + +
+

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

+
+ +

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

+ +
+
{{domxref("AbstractWorker")}}
+
Абстрактные свойства и методы общие для всех типов воркеров (т.е. {{domxref("Worker")}} или {{domxref("SharedWorker")}}).
+
{{domxref("Worker")}}
+
Представляет поток исполнения воркера, позволяющий передавать сообщения текущему коду воркера.
+
{{domxref("SharedWorker")}}
+
Представляет конкретный вид воркера, к которому можно получить доступ из нескольких контекстов, будь то несколько окон, iframe или даже воркеров.
+
{{domxref("WorkerGlobalScope")}}
+
Represents the generic scope of any worker (doing the same job as {{domxref("Window")}} does for normal web content). Different types of worker have scope objects that inherit from this interface and add more specific features.
+
{{domxref("DedicatedWorkerGlobalScope")}}
+
Represents the scope of a dedicated worker, inheriting from {{domxref("WorkerGlobalScope")}} and adding some dedicated features.
+
{{domxref("SharedWorkerGlobalScope")}}
+
Represents the scope of a shared worker, inheriting from {{domxref("WorkerGlobalScope")}} and adding some dedicated features.
+
{{domxref("WorkerNavigator")}}
+
Представляет идентификатор и состояние пользовательского агента (клиента).
+
+ +

Примеры

+ +

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

+ + + +

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

+ +

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

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('HTML WHATWG', '#toc-workers')}}{{Spec2('HTML WHATWG')}}Не отличается от {{SpecName("Web Workers")}}.
{{SpecName('Web Workers')}}{{Spec2('Web Workers')}}Initial definition.
+ +

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

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка4{{CompatGeckoDesktop(1.9.1)}}10.010.64
Разделяемые воркеры4{{CompatGeckoDesktop(29)}}{{CompatNo}}10.64
Передача данных через использование структурного клонирования13{{CompatGeckoDesktop(8)}}10.011.56
Передача данных с использованием передаваемых объектов17 {{property_prefix("webkit")}}
+ 21
{{CompatGeckoDesktop(18)}}{{CompatNo}}156
Глобальный {{domxref("window.URL", "URL")}}10[1]
+ 23
{{CompatGeckoDesktop(21)}}11156[1]
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка4.44{{CompatGeckoMobile(1.9.1)}}1.0.110.011.55.1
Разделяемые воркеры{{CompatNo}}4291.4{{CompatNo}}{{CompatNo}}{{CompatNo}}
Передача данных через использование структурного клонирования{{CompatNo}}481.0.1{{CompatNo}}{{CompatNo}}{{CompatNo}}
Передача данных с использованием передаваемых объектов{{CompatNo}}{{CompatNo}}181.0.1{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] Как webkitURL.

+ +

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

+ + -- cgit v1.2.3-54-g00ecf