Что выведет код 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 ошибок.

Термины по теме