QUESTION: Що таке queueMicrotask?
Асинхронна модель JavaScript спирається на концепцію циклу подій та черг завдань. Функція queueMicrotask є вбудованим у платформу механізмом, який дозволяє явно додавати нове мікрозавдання у спеціальну чергу мікрозавдань рушія JavaScript.
Коли ви викликаєте queueMicrotask(() => {}), передана анонімна функція не виконується моментально. Вона потрапляє в чергу мікрозавдань і гарантовано виконається одразу після того, як завершиться виконання поточного синхронного блоку коду, але перед тим, як управління буде передано іншим типам завдань або відмальовуванню інтерфейсу.
Головна особливість мікрозавдань полягає в їх найвищому пріоритеті всередині циклу подій. Наприклад, черги макрозавдань, такі як setTimeout або setInterval, мають значно менший пріоритет. Рушій завжди спочатку спустошить усю чергу мікрозавдань до кінця, і лише потім перейде до виконання наступного макрозавдання.
Функція queueMicrotask концептуально працює точно так само, як створення і розв'язання промісу через конструкцію на кшталт Promise.resolve().then(() => {}). Проте використання queueMicrotask є більш чистим, нативним і читабельним способом планування мікрозавдань, коли вам не потрібно створювати сам об'єкт промісу заради виконання відкладеного коду.
Цей інструмент часто використовується бібліотеками та фреймворками для пакетної обробки оновлень стану, відкладеного очищення ресурсів або гарантії того, що певний код виконається асинхронно, але якомога раніше, без затримок, характерних для таймерів.