Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Веб - работник , как это определено в World Wide Web Consortium (W3C) и Hypertext Application Technology Рабочая группа Web (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 ( «Привет, мир!» );

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

рабочий . onmessage  =  функция ( событие )  { предупреждение ( «Полученное сообщение»  +  событие . данные ); doSomething (); }function  doSomething ()  { // делаем работу worker . postMessage ( «Работа сделана!» ); }рабочий . terminate ();

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

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

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

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

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

<! DOCTYPE html> < html >  < head >  < title > Пример рабочего: одноядерное вычисление </ title >  </ head >  < body >  < p > Наибольшее простое число, обнаруженное на данный момент: < output  id = "result " > </ output > </ p >  < script >  var  worker  =  new  Worker ( 'worker.js' ); рабочий . onmessage =  функция  ( событие )  {  документ . getElementById ( 'результат' ). textContent  =  событие . данные ;  };  </ script >  </ body > </ html >

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

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

var  n  =  1 ; var  end_value  =  10 ** 7 ; поиск :  while  ( n  <=  end_value )  {  n ++ ;  for  ( var  i  =  2 ;  i  <=  Math . sqrt ( n );  i ++ )  if  ( n  %  i  ==  0 )  продолжить  поиск ;  // нашел простое!  postMessage( n ); }

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

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

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

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

function  browserSupportsWebWorkers ()  {  возвращает  тип  окна . Рабочий  ===  "функция" ; }

Веб-воркеры в настоящее время поддерживаются 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. ^ a b c d Web Workers , WHATWG , получено 3 июня 2010 г.
  2. ^ «Уровень жизни HTML» . Html.spec.whatwg.org . 30 января 2017 . Проверено 31 января 2017 года .
  3. ^ «HTML5 Up and Running» Марк Пилигрим. О'Рейли / Google Press. Август 2010 г.
  4. ^ «Введение в HTML5», Лоусон, Б. и Шарп, Р., 2011.
  5. ^ «HTML5 и CSS3» Брайан П. Хоган. ООО "Прагматичные программисты" 2010.
  6. ^ "Могу ли я использовать ... Web Worker" . caniuse.com . Проверено 30 сентября 2019 .
  7. ^ "Архивная копия" . Архивировано из оригинального 19 октября 2013 года . Проверено 10 июля 2011 года .CS1 maint: заархивированная копия как заголовок ( ссылка )
  8. ^ «Могу ли я использовать ... Таблицы поддержки HTML5, CSS3 и т.д.» . caniuse.com . Проверено 10 июня 2017 .

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

  • Веб-воркеры - W3C
  • Веб-воркеры - WHATWG
  • Использование веб-воркеров - сеть разработчиков Mozilla