Middle
// Promise.resolve() // .then(() => console.log(1)) // // .then(() => console.log(2)) // // Promise.resolve() // .then(() => console.log(11)) // // .then(() => console.log(22)) //
sobes.tech AI
Odpowiedź od AI
W podanym kodzie są dwa łańcuchy obietnic, z których każdy zaczyna się od Promise.resolve(). Ważne jest zrozumienie kolejności wyświetlania w konsoli.
Każdy .then() dodaje obsługę do kolejki mikro-zadań, które są wykonywane po bieżącym stosie wywołań.
Ponieważ oba łańcuchy są tworzone sekwencyjnie, ich obsługiwacze będą umieszczani w kolejce mikro-zadań w kolejności, w jakiej zostały zadeklarowane.
Dlatego wyjście będzie wyglądać następująco:
1
2
11
22
Wyjaśnienie:
- Najpierw wykonywany jest pierwszy
.then(() => console.log(1)), który wyświetla1. - Następnie kolejny
.then(() => console.log(2)), który wyświetla2. - Po nim wykonywany jest
.then(() => console.log(11))z drugiego łańcucha, wyświetlając11. - Na końcu
.then(() => console.log(22)), wyświetlając22.
Jeśli chcielibyśmy, aby wyjście było mieszane lub w innym porządku, musielibyśmy zmienić strukturę obietnic lub użyć setTimeout do opóźnionych wywołań.