Что выведет код Senior Event loop обновлено
Порядок логов в смешанной очереди
Вопрос
Что выведет код? По строке на каждый вывод.
function checkOrder() {
console.log('1');
async function asyncFn() {
console.log('2');
await Promise.resolve(null);
console.log('4');
}
asyncFn();
new Promise((resolve) => {
setTimeout(() => {
resolve();
console.log('5');
}, 0);
}).then(() => {
console.log('6');
});
console.log('3');
}
checkOrder();
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 1, 2, 3, 4, 5, 6. Почему так На собеседовании эту задачу давали наоборот: показывали вывод 1-2-3-4-5-6 и просили расставить тексты логов.
Что выведет
1
2
3
4
5
6
Разбор
Почему так
На собеседовании эту задачу давали наоборот: показывали вывод 1-2-3-4-5-6 и просили расставить тексты логов. Разбор: 1 синхронно, 2 синхронно внутри async до await, 3 синхронно в конце функции, 4 микрозадачей после await, затем макрозадача таймера печатает 5 и резолвит промис, и 6 уходит в микрозадачу сразу после неё.
Вывод
1
2
3
4
5
6
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.