начало сценария
обещание1
обещание2
конец сценария
обещание3
гонка: A
Chrome версии 131.0.6778.26 и среда узла 22.4 дают одинаковый результат
Почему «'race': A» выполняется после выполнения обещания3, насколько я понимаю, Promise.race также является микрозадачой, которая сначала помещается в стек микрозадач, поэтому ее следует выполнить первой , но результат не такой, эта проблема меня беспокоит уже давно.
Надеюсь, что смогу дать какое-то официальное объяснение, если ответите на мое недоумение, буду очень признателен!
Код: Выделить всё
console.log('script start')
const promise1 = new Promise((resolve, reject) => {
console.log('promise1')
resolve("A")
})
const promise2 = new Promise((resolve, reject) => {
console.log('promise2')
resolve("B")
})
const p = Promise.race([promise1, promise2])
.then((value) => {
console.log('race:', value)
}).catch((error) => {
console.log(error)
})
Promise.resolve().then(()=> {
console.log('promise3')
})
console.log('script end')
Подробнее здесь: https://stackoverflow.com/questions/793 ... event-loop
Мобильная версия