Обложка канала

Senior Frontend - javascript, html, css

20191 @seniorFront

Senior Front - канал для front-end программистов, здесь есть много всего про CSS3, Javascript, Html5, Angular, React, видео / статьи / курсы

Senior Frontend - javascript, html, css

3 года назад
Открыть в
queueMicrotask Это браузерное API, которое выполняет переданный код асинхронно. Принимает функцию, которая будет передана в очередь микрозадач; Возвращает undefined. queueMicrotask(() => { console.log('Хэй, я выполнюсь асинхронно!') }) Код выше схож со сценарием использования setTimeout(). Оба выполнят код асинхронно: setTimeout(() => { console.log('Хэй, я выполнюсь асинхронно благодаря setTimeout') }, 0) Так в чем же принципиальная разница между ними? queueMicrotask() добавляет переданную функцию в очередь микрозадач. Функции в этой очереди выполняются одна за другой (FIFO: First in First Out) — когда текущая функция выполнилась, запускается следующая функция в очереди. Все микрозадачи в очереди будут выполнены только после того, как текущий стек вызовов окажется пустым, но перед выполнением следующей макрозадачей. Если вернуться к сравнению с setTimeout(), то передаваемые в него функции этого относятся к макрозадачам. Каждая из них будет взята из очереди задач, после того как управление передастся циклу событий. Поэтому, если вызвать queueMicrotask() после setTimeout(), или наоборот — функция, переданная в queueMicrotask(), начнёт своё исполнение первой. 👉 @seniorFront