Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: microtask, mutationobserver, promise

В чем отличие между microtask queue и task queue?

Этот вопрос проверяет знание о механизмах обработки асинхронных операций в JavaScript. Понимание разницы между microtask queue и task queue важно для оптимизации производительности и управления выполнением кода.

Короткий ответ

В JavaScript есть две очереди для обработки асинхронных задач: microtask queue и task queue. Microtask queue содержит задачи, такие как Promise и MutationObserver, которые выполняются после завершения текущего стека выполнения, но перед выполнением задач из task queue. В отличие от этого, task queue содержит задачи, связанные с событиями и таймерами, которые обрабатываются только после выполнения всех микротасков.

Длинный ответ

JavaScript использует однопоточную модель выполнения, что означает, что в любой момент времени выполняется только один поток кода. Чтобы эффективно обрабатывать асинхронные операции, такие как обратные вызовы, Promise, и события, JavaScript использует две очереди: microtask queue и task queue.

Microtask Queue:

Содержит микротаски, которые включают задачи, созданные с помощью Promise.then(), Promise.catch() и MutationObserver.

Microtasks выполняются после завершения текущей операции, но перед выполнением любых задач из task queue. Это позволяет обрабатывать более приоритетные задачи быстрее и гарантирует, что они будут выполнены перед выполнением других событий.

Пример:

console.log('Start'); 
Promise.resolve().then(() => {
	console.log('Microtask 1'); 
}); 
setTimeout(() => {
	console.log('Task 1'); 
}, 0); 
Promise.resolve().then(() => {
	console.log('Microtask 2'); 
}); 
console.log('End');

Результат выполнения:

// Start End Microtask 1 Microtask 2 Task 1

Task Queue:

Содержит задачи, связанные с событиями, таймерами и асинхронными операциями. Задачи из task queue выполняются только после выполнения всех микротасков.

Task queue обрабатывает задачи в порядке их поступления, что может привести к задержкам в выполнении при наличии множества микротасков.

Понимание различий между этими двумя очередями помогает разработчикам оптимизировать производительность и лучше управлять асинхронным кодом, избегая неожиданных задержек в обработке задач.

Уровень

  • Рейтинг:

    4

  • Сложность:

    8

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#microtask

#mutationobserver

#promise

Подпишись на React Developer в телеграм