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
готово!
Объяснение по шагам:
- Вызов
f()запускает функциюf. console.log(1);— выводит1.- Создаётся новый Promise, внутри которого сразу вызывается
console.log(2);— выводит2. - Внутри Promise запускается
setTimeout, который отложит выполнение колбэка. - После создания Promise,
console.log(5);— выводит5. - Вызов
await promiseприостанавливает выполнение функцииfдо разрешения Promise. - Между тем, основной поток продолжает, и после вызова
f()сразу выполняетсяconsole.log(7);— выводит7. - Через некоторое время срабатывает
setTimeout, внутри которого:console.log(3);— выводит3.resolve("готово!");— разрешает Promise.console.log(4);— выводит4.
- После разрешения Promise выполнение функции
fпродолжается:console.log(6);— выводит6.console.log(result);— выводит результат Promise, то естьготово!.
Таким образом, порядок вывода обусловлен синхронным выполнением и очередью событий в JavaScript.