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 ispisuje1. - Zatim sledeći
.then(() => console.log(2)), koji ispisuje2. - Nakon toga, izvršava se
.then(() => console.log(11))iz druge veze, koji ispisuje11. - I na kraju,
.then(() => console.log(22)), koji ispisuje22.
Ako želimo da izlaz bude mešovit ili u drugom redosledu, potrebno je izmeniti strukturu obećanja ili koristiti setTimeout za odložene pozive.