Middle+
Dans quel ordre s'affichera console.log et pourquoi ? Explique l'ordre d'exécution du code synchrone et asynchrone (Event Loop, tâches macro et micro).
sobes.tech IA
Réponse de l'IA
В JavaScript порядок вывода console.log зависит от того, синхронный или асинхронный код выполняется.
Event Loop — это механизм, который управляет выполнением кода, обработкой событий и асинхронных операций. Он работает с двумя основными очередями задач:
- Микрозадачи (microtasks): промисы, process.nextTick (Node.js), MutationObserver.
- Макрозадачи (macrotasks): setTimeout, setInterval, I/O, UI-события.
Порядок выполнения:
- Выполняется весь синхронный код.
- После синхронного кода выполняются все микрозадачи из очереди микрозадач.
- Затем Event Loop берет одну макрозадачу и выполняет её.
- После макрозадачи снова выполняются все микрозадачи.
Пример:
console.log('Синхронный 1');
setTimeout(() => console.log('Макрозадача (setTimeout)'), 0);
Promise.resolve().then(() => console.log('Микрозадача (Promise)'));
console.log('Синхронный 2');
Вывод будет:
Синхронный 1
Синхронный 2
Микрозадача (Promise)
Макрозадача (setTimeout)
Потому что сначала выполняется весь синхронный код, потом микрозадачи, потом макрозадачи.
Таким образом, console.log в синхронном коде выведется сразу, а в асинхронных — в зависимости от типа задачи и очереди.