Middle
// Promise.resolve() // .then(() => console.log(1)) // // .then(() => console.log(2)) // // Promise.resolve() // .then(() => console.log(11)) // // .then(() => console.log(22)) //
sobes.tech AI
Odpoveď od AI
V danom kóde existujú dve reťazce sľubov, z ktorých každý začína s Promise.resolve(). Je dôležité pochopiť poradie výstupu v konzole.
Každé .then() pridáva spracovateľ do fronty mikroúloh, ktoré sa vykonávajú po aktuálnom zásobníku volaní.
Keďže obe reťazce sú vytvorené sekvenčne, ich spracovatelia budú zaradení do fronty v poradí, v akom boli deklarované.
Preto bude výstup:
1
2
11
22
Vysvetlenie:
- Najskôr sa vykoná prvé
.then(() => console.log(1)), ktoré vypíše1. - Potom nasleduje
.then(() => console.log(2)), ktoré vypíše2. - Následne sa vykoná
.then(() => console.log(11))z druhej reťaze, ktorá vypíše11. - A nakoniec
.then(() => console.log(22)), ktorá vypíše22.
Ak chceme, aby bol výstup zmiešaný alebo v inom poradí, musíme zmeniť štruktúru sľubov alebo použiť setTimeout na oneskorené volania.