# 每天一道前端面试题 # 考察promise和setTimeout执行顺序,请问以下输出什么

const promise = new Promise((resolve, reject) => {
console.log(1)
resolve()
console.log(2)
})

promise.then(() => {
console.log(3)
})
setTimeout(()=>{
console.log(5)
}, 0)
console.log(4)

答案: 1, 2, 4, 3, 5, 原因是Promise new的时候会立即执行里面的代码 .then里面的是微任务,是异步,会等同步任务执行完再执行, setTimeout是宏任务 也是异步,但它在微任务之后执行
展开
2