Sobes.tech
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 az 1-et.
  • Ezután a következő .then(() => console.log(2)) fut le, és kiírja a 2-t.
  • Ezután a második láncból a .then(() => console.log(11)) fut le, és kiírja az 11-et.
  • Végül a .then(() => console.log(22)) fut le, és kiírja a 22-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.