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 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świetla 1.
  • Następnie kolejny .then(() => console.log(2)), który wyświetla 2.
  • Po nim wykonywany jest .then(() => console.log(11)) z drugiego łańcucha, wyświetlając 11.
  • Na końcu .then(() => console.log(22)), wyświetlając 22.

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ń.