НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Place for your advertisement!
HTML5. Уроки для початківців. W3Schools українською

En

HTML5 Веб-робітники


Веб-робітник - це JavaScript, який працює в фоновому режимі, не впливаючи на продуктивність сторінки.


Що таке веб-робітник на веб-сторінці?

Під час виконання скриптів на сторінці HTML сторінка припиняє відповідати, поки скрипт (виконання скрипту) не закінчиться.

Веб-робітник - це JavaScript, який працює в фоновому режимі, незалежно від інших скриптів, не впливаючи на продуктивність сторінки. Ви можете продовжувати робити все, що хочете: натискати, обираючи речі і т.д., а веб-робітник буде працювати в фоновому режимі.


Підтримка браузерами

Цифри в таблиці визначають першу версію браузера, яка повністю підтримує Web Workers (веб-робітників).

API
Веб-робітники 4.0 10.0 3.5 4.0 11.5

HTML Веб-робітник. Приклад

Наведений нижче приклад створює простого веб-робітника, який підраховує числа в фоновому режимі:

Приклад

Рахувати числа:

Спробуйте самі »

Перевірте підтримку Веб-робітника

Перед тем, як створити веб-робітника, перевірте, чи підтримує його браузер користувача:

if (typeof(Worker) !== "undefined") {
  // Так! Веб-робітник підтримується!
  // Якийсь код.....
} else {
  // Вибачте! Веб-робітник не підтримується.
}

Створити файл Веб-робітника

Тепер давайте створимо веб-робітника у зовнішньому JavaScript файлі.

Тут ми створюємо скрипт, який рахує. Скрипт зберігається в файлі "demo_workers.js":

var i = 0;

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

timedCount();

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

Примітка: Зазвичай веб-робітники не використовуються для таких простих скриптів, а використовуються для більш ресурсоємних задач.


Створити об’єкт Веб-робітника

Тепер, коли у нас є файл веб-робітника, необхідно викликати його з HTML-сторінки.

Наступні рядки перевіряють, чи існує вже робітник, якщо ні - він створює новий веб-об’єкт і виконує код в "demo_workers.js":

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

Потім ми можемо відправляти і отримувати повідомлення від веб-робітника.

Додайте до веб-робітника слухача подій "onmessage".

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

Коли веб-робітник відправляє повідомлення, виконується код в слухачі події. Дані веб-робітника зберігаються в event.data.


Завершити роботу Веб-робітника

Коли об’єкт веб-робітника створено, він буде продовжувати прослуховувати повідомлення (навіть після завершення зовнішнього скрипту), поки він не буде завершений.

Для припинення роботи веб-робітника і вільних ресурсів браузера/комп’ютера використовуйте метод terminate():

w.terminate();

Повторне використання Веб-робітника

Якщо для робочої змінної задано значення undefined, після її завершення ви можете повторно використовувати код:

w = undefined;

Повний приклад коду Веб-робітника

Ми вже бачили код Веб-робітника в файлі .js. Нижче наведений код для HTML-сторінки:

Приклад

<!DOCTYPE html>
<html>
<body>

<p>Рахувати числа: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>

<script>
var w;

function startWorker() {
  if (typeof(Worker) !== "undefined") {
    if (typeof(w) == "undefined") {
      w = new Worker("demo_workers.js");
    }
    w.onmessage = function(event) {
      document.getElementById("result").innerHTML = event.data;
    };
  } else {
    document.getElementById("result").innerHTML = "К сожалению веб-работник не поддерживается.";
  }
}

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

</body>
</html>
Спробуйте самі »

Веб-робітники та DOM

Оскільки веб-робітники знаходяться у зовнішніх файлах, вони не мають доступа до таких об’єктів JavaScript:

  • Об’єкт вікна
  • Об’єкт документа
  • Батьківський об’єкт

Place for your advertisement!