Sobes.tech
Back to questions
Middle+
1

/* Что выведется в консоли */ 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);

Companies where asked
М.Видео/эльдорадо

Answer from AI

sobes.tech AI

В консоли выведется следующий порядок чисел:

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

Объяснение по шагам:

  1. Вызов f() запускает функцию f.
  2. console.log(1); — выводит 1.
  3. Создаётся новый Promise, внутри которого сразу вызывается console.log(2); — выводит 2.
  4. Внутри Promise запускается setTimeout, который отложит выполнение колбэка.
  5. После создания Promise, console.log(5); — выводит 5.
  6. Вызов await promise приостанавливает выполнение функции f до разрешения Promise.
  7. Между тем, основной поток продолжает, и после вызова f() сразу выполняется console.log(7); — выводит 7.
  8. Через некоторое время срабатывает setTimeout, внутри которого:
    • console.log(3); — выводит 3.
    • resolve("готово!"); — разрешает Promise.
    • console.log(4); — выводит 4.
  9. После разрешения Promise выполнение функции f продолжается:
    • console.log(6); — выводит 6.
    • console.log(result); — выводит результат Promise, то есть готово!.

Таким образом, порядок вывода обусловлен синхронным выполнением и очередью событий в JavaScript.