优先级是调用栈 > 微任务 > 消息队列

// 调用栈
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 | 面试必备