Последние учебники веб-разработки
×

HTML5 Руководство

HTML ГЛАВНАЯ HTML Введение HTML редакторы HTML базовый HTML элементы HTML Атрибуты HTML Заголовки HTML Пункты HTML Стили HTML форматирование HTML цитаты HTML Компьютерный код HTML Комментарии HTML Цвета HTML CSS HTML связи HTML Изображений HTML таблицы HTML Списки HTML Блок и строковые элементы HTML Классы HTML раскладка HTML отзывчивый HTML Iframes HTML JavaScript HTML Глава HTML юридические лица HTML Символы HTML Charset HTML URL шифровать HTML XHTML

HTML формы

HTML формы HTML Форма Элементы HTML Типы входных данных HTML Входные атрибуты

HTML5

HTML5 вступление HTML5 Поддержка HTML5 элементы HTML5 Семантика Миграция HTML5 HTML5 Гид по стилю

HTML Графика

HTML холст HTML SVG

HTML СМИ

HTML СМИ HTML видео HTML аудио HTML Плагины HTML YouTube

HTML APIs

HTML Geolocation HTML Перетаскивания HTML Локальное хранилище HTML App кэш HTML Web Workers HTML SSE

HTML Примеры

HTML Примеры HTML викторина HTML5 викторина HTML Резюме

HTML Рекомендации

HTML Список тегов HTML Атрибуты HTML События HTML холст HTML Аудио Видео HTML DOCTYPEs HTML Цвета HTML Наборы символов HTML URL шифровать HTML Языковые коды HTTP Сообщения HTTP методы PX to EM конвертер Горячие клавиши

HTML5 Web Workers


web worker является JavaScript работает в фоновом режиме, не оказывая влияния на производительность страницы.


Что такое Web Worker ?

При выполнении скриптов в HTML-страницы, страница перестает отвечать на запросы, пока сценарий не будет завершен.

Веб-рабочий, как это определено в World Wide Web Consortium (W3C) и Web Hypertext Application Technology Рабочей группы (WHATWG), является сценарий JavaScript выполняется из HTML-страницы, которая работает в фоновом режиме, независимо от других сценариев пользовательского интерфейса, также может быть выполнена из того же HTML-страницы. Веб-работники часто способны более эффективно использовать многоядерные процессоры.


обзор

Как предусмотрено WHATWG, веб-рабочие относительно тяжелый вес. Ожидается, что они будут долговечны, имеют высокую начальную стоимость до производительность и высокую стоимость памяти на-экземпляра.

Веб-рабочие не предназначены или предполагаются использовать в больших количествах, так как они могут боры системных ресурсов.

Web Workers позволяет для одновременного выполнения нитей браузера и одного или несколько потоков JavaScript, работающих в фоновом режиме. Браузер, который следует один поток выполнения придется ждать программ JavaScript, чтобы закончить выполнение, прежде чем продолжить, и это может занять значительное время, которое программист может нравится, чтобы скрыть от пользователя.

Это позволяет браузеру продолжать нормальную работу во время выполнения скрипта в фоновом режиме. Спецификация веб-работник является отдельной спецификацией из спецификации HTML5 и может быть использована с HTML5.

Есть два типа веб-работников: выделенные и общие рабочие.

Когда веб-работники работают в фоновом режиме, они не имеют прямой доступ к DOM, но общаться с документом посредством передачи сообщений. Это позволяет многопоточного выполнения программ JavaScript.


Поддержка браузеров

Числа в таблице указать первую версию браузера , которая полностью поддерживает Web Workers .

API
Web Workers 4,0 10,0 3,5 4,0 11,5

HTML Web Workers Пример

В приведенном ниже примере создается простой web worker - web worker , что сосчитать число в фоновом режиме:

пример

Count numbers:

Попробуй сам "

Проверка Web Worker - Web Worker поддержки

Перед созданием web worker - web worker , проверьте , поддерживает ли ее браузер пользователя:

if(typeof(Worker) !== "undefined") {
    // Yes! Web worker support!
    // Some code.....
} else {
    // Sorry! No Web Worker support..
}

Создание Web Worker File

Теперь, давайте создадим наш web worker - web worker во внешнем JavaScript.

Здесь мы создаем скрипт, который считает. Сценарий хранится в "/html/demo_workers.js" файл:

var i = 0;

function timedCount() {
    i = i + 1;
    postMessage(i) ;
    setTimeout("timedCount() ",500);
}

timedCount() ;

Важная часть кода выше , является postMessage() метод - который используется для отправки сообщения обратно на страницу HTML.

Note: Обычно web workers - web workers не используются для таких простых сценариев, но для более ресурсоемких задач.


Создание Web Worker объекта

Теперь, когда у нас есть web worker - web worker , файл, нам нужно вызвать его из HTML - страницы.

Следующие строки проверяют , является ли web worker - web worker "/html/demo_workers.js" web worker уже существует, если нет - создает новый web worker - web worker , объект и запускает код в "/html/demo_workers.js" :

if(typeof(w) == "undefined") {
    w = new Worker("/html/demo_workers.js");
}

Тогда мы можем посылать и получать сообщения от web worker - web worker .

Добавить "onmessage" слушателя событий для web worker - web worker .

w.onmessage = function(event){
    document.getElementById("result").innerHTML = event.data;
};

Когда web worker - web worker отправляет сообщение, код внутри обработчика событий выполняются. Данные с web worker - web worker хранится в event.data.


Прервать Web Worker - Web Worker

Когда web worker - (even after the external script is finished) web worker объект будет создан, он будет продолжать прослушивать сообщения (even after the external script is finished) , как (even after the external script is finished) до тех пор, пока не будет прекращено.

Для завершения web worker - terminate() web worker , а также бесплатный браузер / ресурсы компьютера, используйте terminate() метод:

w.terminate();

Повторное использование в Web Worker

Если установить web worker - web worker переменную неопределен, после того, как она была прервана, вы можете повторно использовать код:

w = undefined;

Полный Web Worker Пример кода

Мы уже видели Web Worker код в .js файле. Ниже приведен код страницы HTML:

пример

<!DOCTYPE html>
<html>
<body>

<p>Count numbers: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>
<br><br>

<script>
var w;

function startWorker() {
    if(typeof(Worker) !== "undefined") {
        if(typeof(w) == "undefined") {
            w = new Worker("/html/demo_workers.js");
        }
        w.onmessage = function(event) {
            document.getElementById("result").innerHTML = event.data;
        };
    } else {
        document.getElementById("result").innerHTML = "Sorry! No Web Worker support.";
    }
}

function stopWorker() {
    w.terminate();
    w = undefined;
}
</script>

</body>
</html>
Попробуй сам "

Web Workers и DOM

Так как web workers - web workers находятся во внешних файлах, они не имеют доступа к следующим объектам JavaScript:

  • Объект окна
  • Объект документа
  • Родительский объект