Middle
// Promise.resolve() // .then(() => console.log(1)) // // .then(() => console.log(2)) // // Promise.resolve() // .then(() => console.log(11)) // // .then(() => console.log(22)) //
sobes.tech MI
Válasz az MI-től
A megadott kódban két promise lánc van, mindkettő Promise.resolve()-val kezdődik. Fontos megérteni a konzolban való megjelenés sorrendjét.
Minden .then() hozzáad egy kezelőt a mikrofeladatok sorához, amelyek a jelenlegi hívásstack után futnak.
Mivel mindkét lánc szekvenciálisan jön létre, kezelőik a deklarálási sorrendben kerülnek a sorba.
Ezért a kimenet a következő lesz:
1
2
11
22
Magyarázat:
- Először a
Promise.resolve()-val kezdődő első.then(() => console.log(1))fut le, és kiírja az1-et. - Ezután a következő
.then(() => console.log(2))fut le, és kiírja a2-t. - Ezután a második láncból a
.then(() => console.log(11))fut le, és kiírja az11-et. - Végül a
.then(() => console.log(22))fut le, és kiírja a22-t.
Ha azt szeretnénk, hogy a kimenet kevert vagy más sorrendben legyen, módosítanunk kell a promise szerkezetét vagy setTimeout-ot kell használnunk késleltetett hívásokhoz.