Middle+
¿En qué orden se mostrará console.log y por qué? Explica el orden de ejecución del código síncrono y asíncrono (Event Loop, tareas macro y micro).
sobes.tech AI
Respuesta de la 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 в синхронном коде выведется сразу, а в асинхронных — в зависимости от типа задачи и очереди.