Jump to content

Веб-работник

Веб-работники
Статус Уровень жизни
Год начался 3 апреля 2009 г. ( 03.04.2009 )
Впервые опубликовано 3 апреля 2009 г. ( 03.04.2009 )
Организация
комитет ЧТОРГ
Редакторы Ян Хиксон
Домен
Веб-сайт

Веб -работник , по определению Консорциума Всемирной паутины (W3C) и Рабочей группы по технологиям веб-гипертекстовых приложений (WHATWG), — это JavaScript, сценарий выполняемый с HTML -страницы, который выполняется в фоновом режиме , независимо от сценариев, которые также могли быть выполняется с той же HTML-страницы. [1] Веб-работники часто могут более эффективно использовать многоядерные процессоры . [2]

W3C и WHATWG рассматривают веб-работников как долго выполняющиеся сценарии, которые не прерываются сценариями, реагирующими на клики или другие взаимодействия с пользователем. Предотвращение прерывания таких работников действиями пользователей должно позволить веб-страницам оставаться отзывчивыми, в то время как они выполняют длительные задачи в фоновом режиме.

Спецификация веб-работника является частью HTML Living Standard. [1]

Обзор [ править ]

По замыслу WHATWG, веб-воркеры относительно тяжелы и не предназначены для использования в больших количествах. Ожидается, что они будут долговечными, с высокими затратами на начальную производительность и высокой стоимостью памяти на экземпляр. [1]

Веб-работники работают вне контекста сценариев HTML-документа. Следовательно, хотя у них нет доступа к DOM , они могут облегчить одновременное выполнение программ JavaScript.

Особенности [ править ]

Веб-работники взаимодействуют с основным документом посредством передачи сообщений . Следующий код создает Worker, который будет выполнять JavaScript в данном файле.

var worker = new Worker("worker_script.js");

Чтобы отправить сообщение работнику, postMessage метод рабочего объекта используется, как показано ниже.

worker.postMessage("Hello World!");

The onmessage Свойство использует обработчик событий для получения информации от работника.

worker.onmessage = function(event) {
	alert("Received message " + event.data);
	doSomething();
}
	
function doSomething() {
	//do work
	worker.postMessage("Work done!");
}

worker.terminate();

Как только рабочий процесс завершается, он выходит из области видимости, и ссылающаяся на него переменная становится неопределенной; на этом этапе при необходимости необходимо создать нового работника.

Пример [ править ]

Простейшее использование веб-воркеров — выполнение ресурсоемкой задачи без прерывания работы пользовательского интерфейса.

В этом примере основной документ порождает веб-воркер для вычисления простых чисел и постепенно отображает последнее найденное простое число.

Основная страница выглядит следующим образом:

<!DOCTYPE html>
<html>
 <head>
  <title>Worker example: One-core computation</title>
 </head>
 <body>
  <p>The highest prime number discovered so far is: <output id="result"></output></p>
  <script>
   var worker = new Worker('worker.js');
   worker.onmessage = function (event) {
     document.getElementById('result').textContent = event.data;
   };
  </script>
 </body>
</html>

The Worker() вызов конструктора создает веб-работника и возвращает worker объект, представляющий этого веб-работника, который используется для связи с веб-работником. Этот объект onmessage обработчик событий позволяет коду получать сообщения от веб-воркера.

Сам веб-воркер выглядит следующим образом:

var n = 1;
var end_value = 10**7;
search: while (n <= end_value) {
  n++;
  for (var i = 2; i <= Math.sqrt(n); i++)
    if (n % i == 0)
      continue search;
  // found a prime!
  postMessage(n);
}

Чтобы отправить сообщение обратно на страницу, postMessage() метод используется для публикации сообщения при обнаружении простого числа. [1]

Поддержка [ править ]

Если браузер поддерживает веб-воркеров, свойство Worker будет доступно в объекте глобального окна. [3] Свойство Worker будет неопределенным, если браузер его не поддерживает.

В следующем примере кода проверяется поддержка веб-работника в браузере.

function browserSupportsWebWorkers() {
  return typeof window.Worker === "function";
}

Веб-воркеры в настоящее время поддерживаются Chrome , Opera , Edge , Internet Explorer (версия 10), Mozilla Firefox и Safari . [4] [5] [6] Mobile Safari для iOS поддерживает веб-работников начиная с iOS 5. Браузер Android впервые поддерживал веб-работников в Android 2.1, но поддержка была удалена в версиях Android 2.2–4.3, а затем восстановлена ​​в Android 4.4. [7] [8]

Ссылки [ править ]

  1. ^ Перейти обратно: а б с д Web Workers , WHATWG , получено 2 января 2023 г.
  2. ^ «HTML-уровень жизни» . Html.spec.whatwg.org . 30 января 2017 года . Проверено 31 января 2017 г.
  3. ^ «HTML5 в работе» Марк Пилигрим. О'Рейли/Google Press. август 2010 г.
  4. ^ «Введение в HTML5», Лоусон Б. и Шарп Р., 2011.
  5. ^ «HTML5 и CSS3» Брайан П. Хоган. ООО «Прагматичные программисты», 2010.
  6. ^ «Могу ли я использовать... Web Worker» . caniuse.com . Проверено 30 сентября 2019 г.
  7. ^ «В центре внимания: сравнение Android 2.1 с Web Workers — Isogenic Engine» . Архивировано из оригинала 19 октября 2013 года . Проверено 10 июля 2011 г.
  8. ^ «Могу ли я использовать... Таблицы поддержки HTML5, CSS3 и т. д.» . caniuse.com . Проверено 10 июня 2017 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 431266411ad09e3c961952d674fa2c98__1716283140
URL1:https://arc.ask3.ru/arc/aa/43/98/431266411ad09e3c961952d674fa2c98.html
Заголовок, (Title) документа по адресу, URL1:
Web worker - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)