JavaScript Worker.terminate() — зупинити фоновий потік


Метод terminate() негайно вбиває робітника — без жодних попереджень.

автор: NagarD

Загальний опис

Це не ввічливе прохання завершитись, а обрив. Код усередині зупиняється посеред виконання, у довільній точці. Ніякого finally, ніякого прибирання — робітник просто перестає існувати.

Звідси наслідок: якщо він писав щось у IndexedDB чи надсилав запит, операція лишиться обірваною. Для важливих речей потрібен ввічливий шлях: надіслати команду «завершуйся», дати робітнику прибрати за собою й самому покликати self.close().

Але для скасування важкого обчислення terminate() — саме те: користувач передумав, і чекати немає сенсу.

Після виклику робітник мертвий назавжди: для нової роботи потрібен новий new Worker().

автор: NagarD

Нотатка

Обрив миттєвий і безжальний. Якщо робітник мав щось зберегти чи закрити — воно не збережеться й не закриється.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
terminate 4+ 3.5+ 4+ 11.5+ 12+ 10+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
terminate 4.4+ yes yes 5+

Приклади

+ запропонувати свій приклад у пісочниці

Кнопка «Скасувати» для важкого обчислення.

HTML

<button id="start">Порахувати</button>
<button id="cancel">Скасувати</button>

JS

let worker = null;

start.addEventListener('click', () => {
    worker = new Worker('/heavy.js');

    worker.onmessage = event => {
        console.log('Результат:', event.data);
        worker.terminate();
        worker = null;
    };

    worker.postMessage({ size: 1e9 });
});

cancel.addEventListener('click', () => {
    // обрив посеред обчислення — миттєво
    worker?.terminate();
    worker = null;
});
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід