Назад к вопросам
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
Пояснение по порядку вывода:
console.log(1);— синхронноconsole.log(2);— синхронно при создании промисаconsole.log(5);— синхронно после создания промисаconsole.log(7);— синхронно после вызоваf()
Затем срабатывает setTimeout (микротаск):
console.log(3);console.log(4);
После вызова resolve промис переходит в состояние fulfilled, и await продолжает выполнение:
console.log(6);console.log(result);— выводит "готово!"
Итого последовательность вывода:
1
2
5
7
3
4
6
готово!