Middle+
/* Ի՞նչ կցուցադրվի կոնսոլում */ 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 "Արդյունք"; } f(); console.log(7);
sobes.tech AI
Պատասխան 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 "Արդյունք";
}
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
պատրաստ!