Веб-работник
Статус | Уровень жизни |
---|---|
Год начался | 3 апреля 2009 г. |
Впервые опубликовано | 3 апреля 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 ]
Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д 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