gpt4 book ai didi

javascript - setTimeout 晚于 Promise

转载 作者:行者123 更新时间:2023-11-28 17:23:45 25 4
gpt4 key购买 nike

运行下面的示例,您将看到setTimeout回调总是晚于Promise回调执行。是否有任何机制导致这个结果?或者这不是真的?

setTimeout(function() {
console.log(1)
}, 0)

new Promise(function (resolve, reject) {
resolve(2)
}).then(console.log)

setTimeout(function() {
console.log(3)
}, 0)

new Promise(function (resolve, reject) {
resolve(4)
}).then(console.log)

console.log('rush...')

最佳答案

原生 Promise 被安排为微任务。当当前执行堆栈完成时,首先运行微任务,然后运行常规任务。

有关事件循环的更多信息,包括有关微任务的信息,我推荐此演示文稿:https://www.youtube.com/watch?v=cCOL7MC4Pl0 。关于微任务的部分从第 24 分钟开始。

关于javascript - setTimeout 晚于 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52012872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com