Веб-работник
Положение дел | Уровень жизни |
---|---|
Год начался | 3 апреля 2009 г. |
Впервые опубликовано | 3 апреля 2009 г. |
Организация | |
комитет | ЧТОРГ |
Редакторы | Ян Хиксон |
Домен | |
Веб-сайт |
|
Веб -работник , по определению Консорциума Всемирной паутины (W3C) и Рабочей группы по технологиям веб-гипертекстовых приложений (WHATWG), представляет собой JavaScript сценарий , исполняемый с HTML- страницы, который выполняется в фоновом режиме , независимо от сценариев, которые также могли быть выполняется с той же HTML-страницы. [1] Веб-работники часто могут использовать многоядерные процессоры . более эффективно [2]
W3C и WHATWG рассматривают веб-работников как долго выполняющиеся сценарии, которые не прерываются сценариями, реагирующими на клики или другие взаимодействия с пользователем. Предотвращение прерывания таких работников действиями пользователей должно позволить веб-страницам оставаться отзывчивыми, в то время как они выполняют длительные задачи в фоновом режиме.
Спецификация веб-работника является частью HTML Living Standard. [1]
Обзор [ править ]
По замыслу WHATWG, веб-воркеры относительно тяжелы и не предназначены для использования в больших количествах. Ожидается, что они будут долговечными, с высокими затратами на начальную производительность и высокой стоимостью памяти на экземпляр. [1]
Веб-работники работают вне контекста сценариев HTML-документа. Следовательно, хотя у них нет доступа к DOM , они могут облегчить одновременное выполнение программ JavaScript.
Особенности [ править ]
Веб-работники взаимодействуют с основным документом посредством передачи сообщений . Следующий код создает Worker, который будет выполнять JavaScript в данном файле.
вар рабочий = новый работник ( «worker_script.js» );
Чтобы отправить сообщение работнику, postMessage
метод рабочего объекта используется, как показано ниже.
работник . postMessage ( "Привет, мир!" );
The onmessage
Свойство использует обработчик событий для получения информации от работника.
работник . onmessage = function ( event ) {
alert ( "Полученное сообщение event.data ) + " ;
сделай что-нибудь ();
}
function doSomething () {
//выполняем работу
работника . postMessage ( "Работа выполнена!" );
}
рабочий . прекратить ();
Как только рабочий процесс завершается, он выходит из области видимости, и ссылающаяся на него переменная становится неопределенной; на этом этапе при необходимости необходимо создать нового работника.
Пример [ править ]
Простейшее использование веб-воркеров — выполнение ресурсоемкой задачи без прерывания работы пользовательского интерфейса.
В этом примере основной документ порождает веб-воркер для вычисления простых чисел и постепенно отображает последнее найденное простое число.
Основная страница выглядит следующим образом:
<!DOCTYPE html>
< html >
< head >
< title > Пример рабочего процесса: одноядерное вычисление </ title >
</ head >
< body >
< p > На данный момент обнаружено наибольшее простое число: < output id = "result " >/ вывод >/ p >
< script >
var worker = new Worker ( 'worker.js' );
работник . onmessage = функция ( событие ) {
документ . getElementById ( «результат» ). текстСодержимое = событие . данные ;
};
</ script >
</ body >
</ html >
The Worker()
вызов конструктора создает веб-работника и возвращает worker
объект, представляющий этого веб-работника, который используется для связи с веб-работником. Этот объект onmessage
обработчик событий позволяет коду получать сообщения от веб-воркера.
Сам веб-воркер выглядит следующим образом:
вар п = 1 ;
вар end_value = 10 ** 7 ;
поиск : while ( n <= end_value ) {
n ++ ;
for ( var i = 2 ; i <= Math . sqrt ( n ); я ++ )
, если ( n % i == 0 )
продолжить поиск ;
// найдено простое число!
PostMessage ( н );
}
Чтобы отправить сообщение обратно на страницу, postMessage()
метод используется для публикации сообщения при обнаружении простого числа. [1]
Поддержка [ править ]
Если браузер поддерживает веб-воркеров, свойство Worker будет доступно в объекте глобального окна. [3] Свойство Worker будет неопределенным, если браузер его не поддерживает.
В следующем примере кода проверяется поддержка веб-работника в браузере.
функция BrowseSupportsWebWorkers () {
возвращает тип окна . Рабочий === "функция" ;
}
Веб-воркеры в настоящее время поддерживаются 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]
Ссылки [ править ]
- ^ Перейти обратно: а б с д Web Workers , WHATWG , получено 2 января 2023 г.
- ^ «HTML-уровень жизни» . Html.spec.whatwg.org . 30 января 2017 года . Проверено 31 января 2017 г.
- ^ «HTML5 в работе» Марк Пилигрим. О'Рейли/Google Press. август 2010 г.
- ^ «Введение в HTML5», Лоусон Б. и Шарп Р., 2011.
- ^ «HTML5 и CSS3» Брайан П. Хоган. ООО «Прагматичные программисты», 2010.
- ^ «Могу ли я использовать... Web Worker» . caniuse.com . Проверено 30 сентября 2019 г.
- ^ «В центре внимания: сравнение Android 2.1 с Web Workers — Isogenic Engine» . Архивировано из оригинала 19 октября 2013 года . Проверено 10 июля 2011 г.
- ^ «Могу ли я использовать... Таблицы поддержки HTML5, CSS3 и т. д.» . caniuse.com . Проверено 10 июня 2017 г.
Внешние ссылки [ править ]
- Веб-работники – W3C [ мертвая ссылка ]
- Веб-работники – WHATWG
- Использование веб-воркеров – Сеть разработчиков Mozilla