Middle
Was ist der Unterschied zwischen normalen Aufgaben und Mikrounternehmen?
sobes.tech KI
Antwort von AI
Обычные задачи (macrotasks) выполняются после завершения текущего макроцикла Event Loop. Микрозадачи (microtasks) выполняются после завершения текущей функции, но до старта следующего макроцикла.
К обычным задачам относятся: скрипты, таймеры (setTimeout, setInterval), операции ввода/вывода.
К микрозадачам относятся: промисы (.then(), .catch(), .finally()), process.nextTick(), queueMicrotask(), MutationObserver (в браузерах).
Пример порядка выполнения:
console.log('Start'); // Обычная задача 1 (изначальный скрипт)
setTimeout(() => {
console.log('setTimeout'); // Обычная задача 2
}, 0);
Promise.resolve()
.then(() => {
console.log('Promise 1'); // Микрозадача 1
})
.then(() => {
console.log('Promise 2'); // Микрозадача 2
});
process.nextTick(() => {
console.log('nextTick'); // Микрозадача 3 (выполняется раньше промисов)
});
console.log('End'); // Обычная задача 1 (продолжение скрипта)
Порядок вывода:
Start
End
nextTick
Promise 1
Promise 2
setTimeout
Основные отличия:
| Характеристика | Обычные задачи (Macrotasks) | Микрозадачи (Microtasks) |
|---|---|---|
| Очередь выполнения | Выполняются после всех микрозадач текущего цикла. | Выполняются после текущей операции, но до следующей обычной задачи. |
| Источники | setTimeout, setInterval, I/O, UI-рендеринг. |
Promise.then, process.nextTick, queueMicrotask. |
| Приоритет | Ниже | Выше |