Middle
// Promise.resolve() // .then(() => console.log(1)) // // .then(() => console.log(2)) // // Promise.resolve() // .then(() => console.log(11)) // // .then(() => console.log(22)) //
sobes.tech AI
Отговор от AI
В предоставения код има две вериги от обещания, всяка започваща с Promise.resolve(). Важно е да разберем реда на изхода в конзолата.
Всяко .then() добавя обработчик към опашката на микротасковете, които се изпълняват след текущия стек на извиквания.
Тъй като и двете вериги се създават последователно, техните обработчици ще бъдат поставени в опашката в реда, в който са обявени.
Затова изходът ще бъде:
1
2
11
22
Обяснение:
- Първо се изпълнява първият
.then(() => console.log(1)), който извежда1. - След това следва
.then(() => console.log(2)), който извежда2. - След това се изпълнява
.then(() => console.log(11))от втората верига, който извежда11. - И накрая
.then(() => console.log(22)), който извежда22.
Ако искаме изходът да е смесен или в друг ред, трябва да променим структурата на обещанията или да използваме setTimeout за отложени извиквания.