Выбор ответа Senior Web API и воркеры обновлено
Transferable: передача ArrayBuffer в воркер
Вопрос
Что выведет код в главном потоке?
const buf = new ArrayBuffer(1024);
worker.postMessage(buf, [buf]);
console.log(buf.byteLength);
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 0. Второй аргумент это список transferable-объектов.
Варианты ответа
1024undefined- Будет выброшена ошибка
0правильный ответ
Разбор
Второй аргумент это список transferable-объектов. Буфер не копируется, а передаётся воркеру, и в отправителе он становится отсоединённым (detached) с byteLength === 0. 1024 было бы при обычном копировании. Ошибки нет: чтение длины у отсоединённого буфера разрешено. undefined тоже нет, свойство остаётся числом.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Почему новая версия Service Worker не активируется
Следующий вопрос
Что недоступно в Web Worker