微任务与宏任务执行顺序
- 代码
<script>
let i=0
setTimeout(() => {
console.log(i, "setTimeout")
i++
}, 0)
new Promise(resolve => {
resolve()
console.log(i, "promise")
i++
}).then(value => {
console.log(i, "value")
i++
})
console.log(i, "myPromise")
i++
</script>
- 结果
- 原因
1.Promise中的输出在主线程顺序执行,所以立即执行
promise.html:22 0 'promise'
promise.html:28 1 'myPromise'
2.promise.html:25 2 'value'是Promise的微任务
3.promise.html:17 3 'setTimeout'是宏任务,最后执行