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 АИ

Одговор од АИ

U datom kodu postoje dve lance obećanja, od kojih svako počinje sa Promise.resolve(). Važno je razumeti redosled prikaza u konzoli.

Svaki .then() dodaje rukovaoca u red mikrozadataka, koji se izvršavaju nakon trenutnog steka poziva.

Pošto su oba lanca kreirana sekvencijalno, njihovi rukovaoci će biti stavljeni u red u redosledu u kojem su deklarisani.

Zbog toga će izlaz biti:

1
2
11
22

Objašnjenje:

  • Prvo se izvršava prvi .then(() => console.log(1)), koji ispisuje 1.
  • Zatim sledeći .then(() => console.log(2)), koji ispisuje 2.
  • Nakon toga, izvršava se .then(() => console.log(11)) iz druge veze, koji ispisuje 11.
  • I na kraju, .then(() => console.log(22)), koji ispisuje 22.

Ako želimo da izlaz bude mešovit ili u drugom redosledu, potrebno je izmeniti strukturu obećanja ili koristiti setTimeout za odložene pozive.