Что такое queueMicrotask?
Асинхронная модель JavaScript опирается на концепцию цикла событий и очередей задач. Функция queueMicrotask представляет собой встроенный в платформу механизм, который позволяет явно добавлять новую микрозадачу в специальную очередь микрозадач движка JavaScript.
Когда вы вызываете queueMicrotask(() => {}), переданная анонимная функция не выполняется моментально. Она попадает в очередь микрозадач и гарантированно выполнится сразу после того, как завершится выполнение текущего синхронного блока кода, но перед тем, как управление будет передано другим типам задач или отрисовке интерфейса.
Главная особенность микрозадач заключается в их наивысшем приоритете внутри событийного цикла. Например, очереди макрозадач, такие как setTimeout или setInterval, имеют значительно меньший приоритет. Движок всегда сначала опустошит всю очередь микрозадач до конца, и только потом перейдет к выполнению следующей макрозадачи.
Функция queueMicrotask концептуально работает точно так же, как создание и разрешение промиса через конструкцию вроде Promise.resolve().then(() => {}). Однако использование queueMicrotask является более чистым, нативным и читаемым способом планирования микрозадач, когда вам не нужно создавать сам объект промиса ради выполнения отложенного кода.
Этот инструмент часто используется библиотеками и фреймворками для пакетной обработки обновлений состояния, отложенной очистки ресурсов или гарантии того, что определенный код выполнится асинхронно, но как можно раньше, без задержек, характерных для таймеров.