Веб-работник - Web worker
эта статья нужны дополнительные цитаты для проверка.Июнь 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
А веб-работник, как это определено Консорциум World Wide Web (W3C) и Рабочая группа по технологиям веб-гипертекстовых приложений (WHATWG), это JavaScript сценарий выполнен из HTML страница, которая работает в задний план, независимо от сценариев, которые также могли быть выполнены с той же HTML-страницы.[1] Веб-работники часто могут использовать многоядерный Процессоры более эффективно.[2]
W3C и WHATWG рассматривают веб-воркеров как долго выполняющиеся скрипты, которые не прерываются скриптами, которые реагируют на щелчки или другие действия пользователя. Предотвращение прерывания таких рабочих процессов действиями пользователя должно позволить веб-страницам оставаться отзывчивыми в то же время, когда они выполняют длительные задачи в фоновом режиме.
Самое простое использование рабочих - это выполнение дорогостоящей в вычислительном отношении задачи без прерывания пользовательского интерфейса.
Спецификация веб-воркера является частью HTML Уровень жизни.[1]
Обзор
По замыслу WHATWG, веб-воркеры относительно тяжелы и не предназначены для использования в больших количествах. Ожидается, что они будут долговечными, с высокими начальными затратами на производительность и высокой стоимостью памяти для каждого экземпляра.[1]
Веб-сотрудники работают вне контекста сценариев HTML-документа. Следовательно, пока они не имеют доступа к ДОМ они могут облегчить одновременный выполнение программ на JavaScript.
особенности
Веб-воркеры взаимодействуют с основным документом посредством передачи сообщений. Следующий код создает Worker, который будет выполнять JavaScript в данном файле.
вар рабочий = новый Рабочий("worker_script.js");
Чтобы отправить сообщение работнику, postMessage
используется метод рабочего объекта, как показано ниже.
рабочий.postMessage("Привет мир!");
В onmessage
Свойство использует обработчик событий для получения информации от работника.
рабочий.onmessage = функция(мероприятие) { предупреждение("Полученное сообщение" + мероприятие.данные); сделай что-нибудь();} функция сделай что-нибудь() { //Выполнять работу рабочий.postMessage("Работа выполнена!");}рабочий.прекратить();
Как только рабочий процесс завершается, он выходит за пределы области видимости, и ссылающаяся на него переменная становится неопределенной; на этом этапе при необходимости должен быть создан новый рабочий.
пример
Самым простым способом использования веб-воркеров является выполнение дорогостоящей в вычислительном отношении задачи без прерывания работы пользовательского интерфейса.
В этом примере основной документ порождает веб-воркера для вычисления простые числа, и постепенно отображает последнее найденное простое число.
Главная страница выглядит следующим образом:
<!DOCTYPE html><html> <голова> <заглавие>Пример рабочего: одноядерное вычисление</заглавие> </голова> <тело> <п>Наибольшее открытое простое число: <вывод мне бы="результат"></вывод></п> <сценарий> вар рабочий = новый Рабочий('worker.js'); рабочий.onmessage = функция (мероприятие) { документ.getElementById('результат').textContent = мероприятие.данные; }; </сценарий> </тело></html>
В Рабочий ()
вызов конструктора создает веб-воркера и возвращает рабочий
объект, представляющий этого веб-воркера, который используется для связи с веб-воркером. Этот объект onmessage
обработчик событий позволяет коду получать сообщения от веб-воркера.
Сам Web Worker выглядит следующим образом:
вар п = 1;вар end_value = 10**7;поиск: в то время как (п <= end_value) { п++; для (вар я = 2; я <= Математика.sqrt(п); я++) если (п % я == 0) Продолжать поиск; // нашел простое! postMessage(п);}
Чтобы отправить сообщение обратно на страницу, postMessage ()
используется для публикации сообщения при нахождении простого числа.[1]
Поддержка
Если браузер поддерживает веб-воркеров, свойство Worker будет доступно для глобального объекта окна.[3] Свойство Worker будет неопределенным, если браузер не поддерживает это.
В следующем примере кода проверяется наличие поддержки веб-воркеров в браузере.
функция browserSupportsWebWorkers() { вернуть тип окно.Рабочий === "функция";}
Веб-воркеры в настоящее время поддерживаются Хром, Опера, Край, Internet Explorer (версия 10), Mozilla Fire Fox, и Сафари.[4][5][6] Мобильное Safari для iOS поддерживает веб-воркеров с iOS 5. Android Браузер сначала поддерживал веб-работников в Android 2.1, но поддержка была удалена в версиях Android 2.2–4.3 перед восстановлением в Android 4.4.[7][8]
использованная литература
- ^ а б c d Веб-воркеры, 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