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

En Es De Fr

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


Вебробітник - це 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:

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


Коментарі