Javascript 那么,为什么Promise.then';OnCompleted';函数在setTimeout回调之前激发?

Javascript 那么,为什么Promise.then';OnCompleted';函数在setTimeout回调之前激发?,javascript,promise,settimeout,Javascript,Promise,Settimeout,有人能解释一下为什么promise'then'函数在setTimeout函数之前启动吗?我原以为setTimeout函数将首先安排在事件循环上,因此它将在promise.then函数之前运行 setTimeout(() => { console.log('timer done, thought this would print second') }, 0) Promise.resolve().then(() => { console.log('promise don

有人能解释一下为什么promise'then'函数在setTimeout函数之前启动吗?我原以为setTimeout函数将首先安排在事件循环上,因此它将在promise.then函数之前运行

setTimeout(() => {
    console.log('timer done, thought this would print second')
}, 0)

Promise.resolve().then(() => {
    console.log('promise done, thought this would print third')
})

console.log('synchronous, should print first')
输出:

'同步,应先打印'

'承诺完成,我想这会打印第三张'


“计时器完成,以为这会打印第二个”

如果都是同步的,我们不会在“同步,应该先打印”之前打印“承诺完成”?好问题!答:它们不在同一事件队列上调度,事件循环将在其他回调之前运行承诺回调