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