Последовательность обещания.race() в цикле событийJavascript

Форум по Javascript
Ответить
Anonymous
 Последовательность обещания.race() в цикле событий

Сообщение Anonymous »

В результате выполняется следующий код:
начало сценария
обещание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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»