setTimeout(() => {
console.log(1)
})
new Promise(function executor(resolve) {
console.log(2)
for (let i = 0; i < 10000; i++) {
i ===999 && resolve()
}
console.log(3)
}).then(() => {
console.log(4)
})
console.log(5)
// 顺序为 2 3 5 4 1
js 这里的运行机制:
- setTimeout,于是会先设置一个定时,在定时结束后讲传递这个函数放到任务队列里面,因此1不会最开始执行
- promise,2和3会直接执行,然后4是在promise的then淫荡会放到当前tick的最后但是还是在当前的tick中,因此先输出5,再输出4,最后一个tick输出1