Sobes.tech
Back to questions
Middle
5

Как ты понимаешь асинхронность в Node.js? Что такое microtask queue и macrotask queue?

Companies where asked
Evrone

Answer from AI

sobes.tech AI

Асинхронность в Node.js — это способность выполнять операции, не блокируя основной поток выполнения. Node.js использует событийный цикл (event loop), который обрабатывает задачи по мере их готовности, позволяя эффективно работать с I/O.

Microtask queue и macrotask queue — это две очереди задач с разным приоритетом в event loop:

  • Macrotask queue (или просто task queue) содержит задачи, такие как обработчики событий, таймеры (setTimeout, setInterval), I/O операции. После выполнения текущего стека вызовов event loop берет задачу из этой очереди.

  • Microtask queue содержит задачи, которые должны выполниться сразу после текущего стека вызовов, но до следующей macrotask. Сюда относятся промисы (.then, .catch), process.nextTick в Node.js.

Порядок выполнения:

  1. Выполняется текущий стек вызовов.
  2. Выполняются все задачи из microtask queue.
  3. Выполняется одна задача из macrotask queue.
  4. Повторяется цикл.

Это обеспечивает более быстрый отклик на промисы и другие микротаски по сравнению с макротасками.