Sobes.tech
Назад к вопросам
Middle+
7

/* Что выведется в консоли */ async function f() { console.log(1); const promise = new Promise((resolve) => { console.log(2); setTimeout(() => { console.log(3); resolve("готово!"); console.log(4); }); }); console.log(5); const result = await promise; console.log(6); console.log(result); return "Result"; } f(); console.log(7);

Компании, где спрашивали
М.Видео/эльдорадо

Ответ от нейросети

sobes.tech AI

Рассмотрим последовательность вывода в консоль:

async function f() {
  console.log(1); // 1
  const promise = new Promise((resolve) => {
    console.log(2); // 2
    setTimeout(() => {
      console.log(3); // 3 (через ~0 мс)
      resolve("готово!");
      console.log(4); // 4
    });
  });
  console.log(5); // 5

  const result = await promise; // ждём разрешения промиса
  console.log(6); // 6
  console.log(result); // "готово!"
  return "Result";
}

f();
console.log(7); // 7

Пояснение по порядку вывода:

  1. console.log(1); — синхронно
  2. console.log(2); — синхронно при создании промиса
  3. console.log(5); — синхронно после создания промиса
  4. console.log(7); — синхронно после вызова f()

Затем срабатывает setTimeout (микротаск):

  1. console.log(3);
  2. console.log(4);

После вызова resolve промис переходит в состояние fulfilled, и await продолжает выполнение:

  1. console.log(6);
  2. console.log(result); — выводит "готово!"

Итого последовательность вывода:

1
2
5
7
3
4
6
готово!