优先级是调用栈 > 微任务 > 消息队列
// 调用栈
function func() {
console.log("func");
}
// 消息队列
setTimeout(() => {
console.log("setTimeout");
}, 0)
var p = new Promise((resolve, reject) => {
console.log("Promise");
resolve()
})
// 微任务
p.then(() => {
console.log("then");
})
func()
/**
* 执行结果
Promise
func
then
setTimeout
*/
参考
2分钟了解 JavaScript Event Loop | 面试必备