JavaScript Worker.onmessage — отримати результат від робітника


Обробник onmessage спрацьовує, коли робітник надіслав дані назад.

автор: NagarD

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

Дані лежать у event.data — не в самому event. Це друга за поширеністю помилка після забутого postMessage.

Один канал, багато задач — тому в реальному коді всередину повідомлення кладуть тип, а обробник розгалужується по ньому. Інакше відповіді на різні запити переплутаються.

Замість onmessage можна писати addEventListener('message', ...) — тоді обробників може бути кілька.

автор: NagarD

Переглядачі

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

Приклади

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

Один канал, кілька типів повідомлень.

const worker = new Worker('/worker.js');

worker.onmessage = event => {
    // дані в event.data, не в event!
    const { type, payload } = event.data;

    switch (type) {
        case 'progress':
            bar.value = payload;
            break;

        case 'done':
            console.log('Результат:', payload);
            worker.terminate();
            break;

        case 'error':
            console.error(payload);
            break;
    }
};

worker.postMessage({ type: 'start', size: 1e8 });
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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