宏任务与微任务
宏任务
-
异步Ajax请求
-
setTimeout、setInterval
-
文件操作
-
其他宏任务
微任务
-
Promise.then、.catch和.finally
-
process.nextTick
-
其他微任务
setTimeoit(function(){
console.log('1')
})
new Promise(function(resolve){
console.log('2')
resolve()
}).then(function(){
console.log('3')
})
console.log('4')
正确执行顺序:2431
分析:
当promise中function以同步方式进行执行
-
先执行所有的同步任务
-
执行宏任务promise函数和console.log('4')
-
-
再执行微任务
-
执行console.log('3')
-
-
再执行下一个宏任务
-
执行setTimeout函数
-
注释:优先执行微任务