diff options
| author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:52 -0500 |
|---|---|---|
| committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:52 -0500 |
| commit | 074785cea106179cb3305637055ab0a009ca74f2 (patch) | |
| tree | e6ae371cccd642aa2b67f39752a2cdf1fd4eb040 /files/ru/web/api/worker | |
| parent | da78a9e329e272dedb2400b79a3bdeebff387d47 (diff) | |
| download | translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.gz translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.bz2 translated-content-074785cea106179cb3305637055ab0a009ca74f2.zip | |
initial commit
Diffstat (limited to 'files/ru/web/api/worker')
| -rw-r--r-- | files/ru/web/api/worker/index.html | 145 | ||||
| -rw-r--r-- | files/ru/web/api/worker/onmessage/index.html | 124 | ||||
| -rw-r--r-- | files/ru/web/api/worker/postmessage/index.html | 163 | ||||
| -rw-r--r-- | files/ru/web/api/worker/terminate/index.html | 64 | ||||
| -rw-r--r-- | files/ru/web/api/worker/worker/index.html | 89 |
5 files changed, 585 insertions, 0 deletions
diff --git a/files/ru/web/api/worker/index.html b/files/ru/web/api/worker/index.html new file mode 100644 index 0000000000..6ccf2b1341 --- /dev/null +++ b/files/ru/web/api/worker/index.html @@ -0,0 +1,145 @@ +--- +title: Worker +slug: Web/API/Worker +translation_of: Web/API/Worker +--- +<p>{{APIRef("Web Workers API")}}</p> + +<p>Интерфейс <strong><code>Worker</code></strong> из <a href="/en-US/docs/Web/API/Web_Workers_API">Web Workers API</a> является представителем фоновой задачи, которая легко может быть создана и может передавать сообщения обратно создателю. Создание worker - это вызов конструктора <code>Worker()</code> и задание скрипта, выполняемого в потоке worker.</p> + +<p>Workers могут, в свою очередь, порождать новые workers, если эти workers расположены в одном каталоге с родительской страницей (Примечание: вложенные workers в настоящее время <a href="https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/5R3B4RN4GHU">не поддерживаются в Blink</a>). Кроме того, workers могут использовать <a class="internal" href="/en/DOM/XMLHttpRequest" title="En/XMLHttpRequest"><code>XMLHttpRequest</code></a> для network I/O, при условии, что атрибуты <code>responseXML</code> и <code>channel</code> <code>XMLHttpRequest</code> всегда возвращают<code> null</code>.</p> + +<p>Не <a href="/En/DOM/Worker/Functions_available_to_workers" title="En/DOM/Worker/Functions available to workers">все интерфейсы и функции могут быть использованы</a> в скрипте, ассоциированном с <code>Worker</code>.</p> + +<p>В Firefox, если вы хотите использовать workers в расширениях и хотели бы иметь доступ к <a href="/en/js-ctypes" title="en/js-ctypes">js-ctypes</a>, вам нужно использовать объект {{ domxref("ChromeWorker") }}.</p> + +<h2 id="Свойства">Свойства</h2> + +<p><em>Наследует свойства родителя, {{domxref("EventTarget")}}, и поддерживает свойства из {{domxref("AbstractWorker")}}.</em></p> + +<h3 id="Обработчики_событий">Обработчики событий</h3> + +<dl> + <dt>{{domxref("AbstractWorker.onerror")}}</dt> + <dd>{{ domxref("EventListener") }} вызываемый каждый раз, когда из воркера приходит {{domxref("ErrorEvent")}} с типом <code>error</code>. Это событие унаследовано от {{domxref("AbstractWorker")}}.</dd> + <dt>{{domxref("Worker.onmessage")}}</dt> + <dd>{{ domxref("EventListener") }} вызываемый каждый раз, когда из воркера приходит {{domxref("MessageEvent")}} с типом <code>message</code> — то есть когда сообщение было отправлено воркером в родительский документ с помощью {{domxref("DedicatedWorkerGlobalScope.postMessage")}}. Сообщение передаётся в свойстве объекта события {{domxref("MessageEvent.data", "data")}}.</dd> +</dl> + +<h2 id="Конструкторы">Конструкторы</h2> + +<dl> + <dt>{{domxref("Worker.Worker", "Worker()")}}</dt> + <dd>Создаёт dedicated web worker, выполняющий скрипт, расположенный по указаному URL. Воркеры также могут быть созданы с использованием <a href="/en-US/docs/Web/API/Blob">Blobs</a>.</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<p><em>Наследует методы своего родителя, {{domxref("EventTarget")}}, а также реализует методы {{domxref("AbstractWorker")}}.</em></p> + +<dl> + <dt>{{domxref("Worker.postMessage()")}}</dt> + <dd>Отправляет сообщение — которое может являться <code>любым</code> JavaScript объектом — во внутреннюю область видимости воркера.</dd> + <dt>{{domxref("Worker.terminate()")}}</dt> + <dd>Немедленно завершает выполнение воркера. Не даёт воркеру возможности завершить выполняемые операции; просто сразу останавливается. Экземпляры ServiceWorker не поддерживают этот метод.</dd> +</dl> + +<h2 id="Пример">Пример</h2> + +<p>Представленный фрагмент кода показывает создание объекта {{domxref("Worker")}} с помощью конструктора {{domxref("Worker.Worker", "Worker()")}}, а также его использование:</p> + +<pre class="brush: js">var myWorker = new Worker("worker.js"); + +first.onchange = function() { + myWorker.postMessage([first.value,second.value]); + console.log('Message posted to worker'); +}</pre> + +<p>For a full example, see our<a class="external external-icon" href="https://github.com/mdn/simple-web-worker">Basic dedicated worker example</a> (<a class="external external-icon" href="http://mdn.github.io/simple-web-worker/">run dedicated worker</a>).</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('HTML WHATWG', "#worker", "Worker")}}</td> + <td>{{Spec2('HTML WHATWG')}}</td> + <td>No change from {{SpecName("Web Workers")}}.</td> + </tr> + <tr> + <td>{{SpecName('Web Workers', "#worker", "Worker")}}</td> + <td>{{Spec2('Web Workers')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>Поддержка варьируется для разных видов воркеров. Для уточнения смотрите статьи по каждому типу воркеров.</p> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Basic support</td> + <td>4</td> + <td>3.5</td> + <td>10.0</td> + <td>10.6</td> + <td>4</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>Firefox OS (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + <th>Chrome for Android</th> + </tr> + <tr> + <td>Basic support</td> + <td>4.4</td> + <td>3.5</td> + <td>1.0.1</td> + <td>10.0</td> + <td>11.5</td> + <td>5.1</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a class="internal" href="/En/Using_web_workers" title="en/Using DOM workers">Using web workers</a></li> + <li><a href="/En/DOM/Worker/Functions_available_to_workers" title="https://developer.mozilla.org/En/DOM/Worker/Functions_available_to_workers">Functions available to workers</a></li> + <li>Другие типы воркеров: {{ domxref("SharedWorker") }} и <a href="/en-US/docs/Web/API/ServiceWorker_API">ServiceWorker</a>.</li> + <li>Non-standard, Gecko-specific workers: {{ domxref("ChromeWorker") }}, used by extensions.</li> +</ul> diff --git a/files/ru/web/api/worker/onmessage/index.html b/files/ru/web/api/worker/onmessage/index.html new file mode 100644 index 0000000000..86db26c45f --- /dev/null +++ b/files/ru/web/api/worker/onmessage/index.html @@ -0,0 +1,124 @@ +--- +title: Worker.onmessage +slug: Web/API/Worker/onmessage +translation_of: Web/API/Worker/onmessage +--- +<p>{{APIRef("Web Workers API")}}</p> + +<p>Свойство <strong><code>onmessage</code></strong> интерфейса {{domxref("Worker")}} представляет собой обработчик {{domxref("EventHandler")}}, который будет вызван когда произойдет событие {{event("message")}}. Тип этого события {{domxref("MessageEvent")}} и оно будет вызвано когда worker-объект получит сообщение из выполняемого им кода (т.е из метода {{domxref("DedicatedWorkerGlobalScope.postMessage")}} .</p> + +<div class="note"> +<p><span style="font-size: 14px; line-height: 21px;"><strong>Примечание</strong></span>: Данные события доступны в свойстве data события {{event("message")}}.</p> +</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="brush: js">myWorker.onmessage = function(e) { ... }</pre> + +<h2 id="Пример">Пример</h2> + +<p>Следующий пример кода показывает создание объекта {{domxref("Worker")}} используя конструктор {{domxref("Worker.Worker", "Worker()")}}. События попадают в объект, когда значение внутри поля ввода формы <code>first</code> изменяется. Обработчик onmessage указан для обработки сообщений, которые приходят назад из кода объекта в текущий контекст выполнения.</p> + +<pre class="brush: js">var myWorker = new Worker("worker.js"); + +first.onchange = function() { + myWorker.postMessage([first.value,second.value]); + console.log('Сообщение, отправленное в worker-объект'); +} + +myWorker.onmessage = function(e) { + result.textContent = e.data; + console.log('Сообщение полученное из worker-объекта'); +} +</pre> + +<p>В скрипте <code>worker.js</code>, обработчик <code>onmessage</code> используется для обработки событий, полученных из главного скрипта:</p> + +<pre class="brush: js">onmessage = function(e) { + console.log('Сообщение полученное из главного скрипта'); + var workerResult = 'Результат: ' + (e.data[0] * e.data[1]); + console.log('Отправка сообщения назад в главный скрипт'); + postMessage(workerResult); +}</pre> + +<p>Посмотрите как в скрипте <code>worker.js</code> вызывается обработчик <code>onmessage</code><code>.</code> В нем присутствует только глобальное свойство <code>onmessage,</code> потому что worker-объект фактически является областью видимости ({{domxref("DedicatedWorkerGlobalScope")}}).</p> + +<p>Для полного примера смотрите наш <a class="external external-icon" href="https://github.com/mdn/simple-web-worker">Basic dedicated worker example</a> (<a class="external external-icon" href="http://mdn.github.io/simple-web-worker/">run dedicated worker</a>).</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('HTML WHATWG', "#handler-worker-onmessage", "Worker.onmessage")}}</td> + <td>{{Spec2('HTML WHATWG')}}</td> + <td>Никаких изменений из {{SpecName("Web Workers")}}.</td> + </tr> + <tr> + <td>{{SpecName('Web Workers', "#handler-worker-onmessage", "Worker.onmessage")}}</td> + <td>{{Spec2('Web Workers')}}</td> + <td>Начальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Функциональность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>4</td> + <td>3.5</td> + <td>10.0</td> + <td>10.6</td> + <td>4</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Функциональность</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>Firefox OS (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>4.4</td> + <td>3.5</td> + <td>1.0.1</td> + <td>10.0</td> + <td>11.5</td> + <td>5.1</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<p>Интерфейс {{domxref("Worker")}}, которому принадлежит этот обработчик.</p> diff --git a/files/ru/web/api/worker/postmessage/index.html b/files/ru/web/api/worker/postmessage/index.html new file mode 100644 index 0000000000..1d6279b648 --- /dev/null +++ b/files/ru/web/api/worker/postmessage/index.html @@ -0,0 +1,163 @@ +--- +title: Worker.postMessage() +slug: Web/API/Worker/postMessage +tags: + - API + - JavaScript + - Web Workers + - Worker + - postMessage + - Ссылка + - метод +translation_of: Web/API/Worker/postMessage +--- +<p>{{APIRef("Web Workers API")}}</p> + +<p>Метод <code><strong>postMessage()</strong></code> интерфейса {{domxref("Worker")}} отправляет сообщение во внутреннее пространство <code>worker</code>-а. Метод имеет один параметр с данными для отправки в <code>worker</code>. Данные могут быть любым значением или объектом JavaScript, которые может обработать <a href="/ru/docs/Web/API/Web_Workers_API/Structured_clone_algorithm">алгоритм структурированного клонирования</a>, подерживающий циклические ссылки.</p> + +<p><code>Worker</code> может отправить обратно информацию потоку создавшему его с помощью метода {{domxref("DedicatedWorkerGlobalScope.postMessage")}}.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="brush: js">worker.postMessage(message, [transfer]);</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><em>message</em></dt> + <dd><code>Object</code> передаваемый в <code>worker</code>. Будет содержаться в поле <code>data</code> описания события обработчика {{domxref("DedicatedWorkerGlobalScope.onmessage")}}. Это может быть любое значение или объект JavaScript, которые может обработать алгоритм структурированного клонирования, подерживающий циклические ссылки.</dd> + <dt><em>transfer</em> {{optional_inline}}</dt> + <dd>Необязательный <code><a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Array">array</a></code> с передаваемыми ({{domxref("Transferable")}}) объектами (из тех, что были указаны в <code>message</code>) на которые передаются права собственности. Если право на объект передается, он становится непригодным (<em>neutered</em>) в контексте, из которого был отправлен, и становится доступным только в <code>worker</code>, которому он был отправлен.</dd> + <dd>Переданные (<code>transferable</code>) объекты могут быть экземплярами классов {{domxref("ArrayBuffer")}}, {{domxref("MessagePort")}} или {{domxref("ImageBitmap")}}. null не является допустимым значением для передачи прав.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Void.</p> + +<h2 id="Пример">Пример</h2> + +<p>В следующем фрагменте кода показано создание объекта {{domxref("Worker")}} с помощью конструктора {{domxref("Worker.Worker", "Worker()")}}. При изменении значений одного из двух полей формы (<code>first</code> и <code>second</code>) событием {{event("change")}} вызывается функция <code>postMessage()</code> для отправки значений полей текущему worker.</p> + +<pre class="brush: js">var myWorker = new Worker('worker.js'); + +first.onchange = function() { + myWorker.postMessage([first.value,second.value]); + console.log('Сообщение отправлено работнику'); +} + +second.onchange = function() { + myWorker.postMessage([first.value,second.value]); + console.log('Сообщение отправлено работнику'); +} +</pre> + +<p>Больше примеров можно найти здесь: <a class="external external-icon" href="https://github.com/mdn/simple-web-worker">Basic dedicated worker example</a> (<a class="external external-icon" href="http://mdn.github.io/simple-web-worker/">run dedicated worker</a>).</p> + +<div class="note"> +<p><strong>Замечание</strong>: <code>postMessage()</code> может отправить только один объект за раз. Если нужно передать несколько значений, то можно отправить массив, как показано выше.</p> +</div> + +<h3 id="Пример_с_Transfer">Пример с Transfer</h3> + +<p>В этом примере показано дополнение Firefox, которое передает <code>ArrayBuffer</code> из основного потока в <code>ChromeWorker</code>, а затем <code>ChromeWorker</code> передает его обратно в основной поток.</p> + +<h4 id="Код_основного_потока">Код основного потока:</h4> + +<pre class="brush: js">var myWorker = new ChromeWorker(self.path + 'myWorker.js'); + +function handleMessageFromWorker(msg) { + console.log('входящее сообщение от работника:', msg); + switch (msg.data.aTopic) { + case 'do_sendMainArrBuff': + sendMainArrBuff(msg.data.aBuf) + break; + default: + throw 'свойство aTopic отсутствует в сообщении ChromeWorker'; + } +} + +myWorker.addEventListener('message', handleMessageFromWorker); + +// Создание и отправка буфера +var arrBuf = new ArrayBuffer(8); +console.info('arrBuf.byteLength, ДО передачи:', arrBuf.byteLength); + +myWorker.postMessage( + { + aTopic: 'do_sendWorkerArrBuff', + aBuf: arrBuf // буфер который передается 3 строками ниже + }, + [ + arrBuf // буфер созданный на строке 9 + ] +); + +console.info('arrBuf.byteLength, ПОСЛЕ передачи:', arrBuf.byteLength); +</pre> + +<h4 id="Код_Worker-а">Код Worker-а</h4> + +<pre class="brush: js">self.onmessage = function (msg) { + switch (msg.data.aTopic) { + case 'do_sendWorkerArrBuff': + sendWorkerArrBuff(msg.data.aBuf) + break; + default: + throw 'свойство aTopic отсутствует в сообщении ChromeWorker'; + } +} + +function sendWorkerArrBuff(aBuf) { + console.info('от рабочего, ДО отправки обратно, aBuf.byteLength:', aBuf.byteLength); + + self.postMessage({aTopic:'do_sendMainArrBuff', aBuf:aBuf}, [aBuf]); + + console.info('от рабочего, ПОСЛЕ отправки обратно, aBuf.byteLength:', aBuf.byteLength); +} +</pre> + +<h4 id="Лог_консоли">Лог консоли</h4> + +<pre>arrBuf.byteLength, ДО передачи: 8 bootstrap.js:40 +arrBuf.byteLength, ПОСЛЕ передачи: 0 bootstrap.js:42 + +от рабочего, ДО отправки обратно, aBuf.byteLength: 8 myWorker.js:5:2 + +входящее сообщение от работника: message { ... } bootstrap.js:20 +буфер вернулся в основной поток, aBuf.byteLength: 8 bootstrap.js:12 + +от рабочего, ПОСЛЕ отправки обратно, aBuf.byteLength: 0 myWorker.js:7:2</pre> + +<p><code>byteLength</code> равен 0 потому, что это переданный (<code>transferable</code>) объект. Полный пример демо дополнения Firefox можно найти здесь: <a href="https://github.com/Noitidart/ChromeWorker/tree/aca57d9cadc4e68af16201bdecbfb6f9a6f9ca6b">GitHub :: ChromeWorker - demo-transfer-arraybuffer</a></p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('HTML WHATWG', "#dom-worker-postmessage", "Worker.postMessage()")}}</td> + <td>{{Spec2('HTML WHATWG')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад в данные, пожалуйста, проверьте <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам запрос.</div> + +<p>{{Compat("api.Worker.postMessage")}}</p> + +<p>[1] Internet Explorer не поддерживает {{domxref("Transferable")}} объекты.</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>Интерфейс {{domxref("Worker")}}</li> +</ul> diff --git a/files/ru/web/api/worker/terminate/index.html b/files/ru/web/api/worker/terminate/index.html new file mode 100644 index 0000000000..68c93a7b08 --- /dev/null +++ b/files/ru/web/api/worker/terminate/index.html @@ -0,0 +1,64 @@ +--- +title: Worker.terminate() +slug: Web/API/Worker/terminate +tags: + - API + - Reference + - Web Workers + - Worker + - terminate + - Ссылка + - метод +translation_of: Web/API/Worker/terminate +--- +<p>{{APIRef("Web Workers API")}}</p> + +<p>Метод <code><strong>terminate()</strong></code> интерфейса {{domxref("Worker")}} немедленно завершает работу <code>worker</code>. Работнику не дается возможность завершить свою работу, он останавливается сразу.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="brush: js">myWorker.terminate();</pre> + +<h3 id="Параметры">Параметры</h3> + +<p>Нет.</p> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Void.</p> + +<h2 id="Пример">Пример</h2> + +<p>В следующем фрагменте кода показано создание потока {{domxref("Worker")}} с помощью конструктора {{domxref("Worker.Worker", "Worker()")}}, который немедленно завершается.</p> + +<pre class="brush: js">var myWorker = new Worker('worker.js'); + +myWorker.terminate(); +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('HTML WHATWG', "#dom-worker-terminate", "Worker.terminate()")}}</td> + <td>{{Spec2('HTML WHATWG')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад в данные, пожалуйста, проверьте <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам запрос.</div> + +<p>{{Compat("api.Worker.terminate")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<p>Интерфейс {{domxref("Worker")}}.</p> diff --git a/files/ru/web/api/worker/worker/index.html b/files/ru/web/api/worker/worker/index.html new file mode 100644 index 0000000000..625841b703 --- /dev/null +++ b/files/ru/web/api/worker/worker/index.html @@ -0,0 +1,89 @@ +--- +title: Worker() +slug: Web/API/Worker/Worker +tags: + - API + - Constructor + - Reference + - Web Workers + - Worker + - Конструктор + - Ссылка +translation_of: Web/API/Worker/Worker +--- +<p>{{APIRef("Web Workers API")}}</p> + +<p>Конструктор <code><strong>Worker()</strong></code> создает объект {{domxref ("Worker")}}, который выполняет скрипт по указанному URL-адресу. Этот скрипт должен подчиняться политике одного источника (<a href="/en/Same_origin_policy_for_JavaScript" title="Same origin policy for JavaScript">same-origin policy</a>).</p> + +<p>Если URL имеет недопустимый синтаксис или нарушена политика одного источника, то будет вызвано {{domxref("DOMException")}} типа <code>SECURITY_ERR</code>.</p> + +<div class="note"> +<p><strong>Замечание</strong>: that there is a disagreement among browser manufacturers about whether a data URI is of the same origin or not. Though Gecko 10.0 {{ geckoRelease("10.0") }} and later accept data URIs, that's not the case in all other browsers.</p> +</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="brush: js">var myWorker = new Worker(<em>aURL</em>, <em>options</em>);</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><em>aURL</em></dt> + <dd>{{domxref("USVString")}}, представляющая URL-адрес скрипта который будет выполняться <code>worker</code>. Он должен подчиняться политике одного источника.</dd> + <dt><em>options</em> {{optional_inline}}</dt> + <dd>An object containing option properties that can be set when creating the object instance. Available properties are as follows: + <ul> + <li><code>type</code>: A {{domxref("DOMString")}} specifying the type of worker to create. The value can be <code>classic</code> or <code>module</code>. If not specified, the default used is <code>classic</code>.</li> + <li><code>credentials</code>: A {{domxref("DOMString")}} specifying the type of credentials to use for the worker. The value can be<dfn> <code>omit</code></dfn>, <code><dfn>same-origin</dfn></code>, or <dfn><code>include</code>. If not specified, or if type is <code>classic</code>, the default used is <code>omit</code> (no credentials required).</dfn></li> + <li><dfn><code>name</code>: A </dfn>{{domxref("DOMString")}} specifying an identifying name for the {{domxref("DedicatedWorkerGlobalScope")}} representing the scope of the worker, which is mainly useful for debugging purposes.</li> + </ul> + </dd> +</dl> + +<h3 id="Исключения">Исключения</h3> + +<ul> + <li>A <code>SecurityError</code> is raised if the document is not allowed to start workers.</li> + <li>A <code>NetworkError</code> is raised if the MIME type of one of the script is <code>text/csv</code>, <code>image/*</code>, <code>video/*</code>, or <code>audio/*</code>. It should always be <code>text/javacript.</code></li> + <li>A <code>SyntaxError</code> is raised if <em>aUR</em><em>L</em> cannot be parsed.</li> +</ul> + +<h2 id="Пример">Пример</h2> + +<p>Следующий фрагмент кода показывает создание объекта {{domxref ("Worker")}} с помощью конструктора <code>Worker()</code> и его последующее использование:</p> + +<pre class="brush: js">var myWorker = new Worker('worker.js'); + +first.onchange = function() { + myWorker.postMessage([first.value,second.value]); + console.log('Message posted to worker'); +}</pre> + +<p>Больше примеров можно найти здесь: <a class="external external-icon" href="https://github.com/mdn/simple-web-worker">Basic dedicated worker example</a> (<a class="external external-icon" href="http://mdn.github.io/simple-web-worker/">run dedicated worker</a>).</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('HTML WHATWG', "#dom-worker", "Worker()")}}</td> + <td>{{Spec2('HTML WHATWG')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("api.Worker.Worker")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<p>Интерфейс {{domxref("Worker")}}</p> |
