宏任务(macrotask )和微任务(microtask )
微任务 (promise 、async await)
- 遇到微任务,放在当前任务列的最底端(then或者catch里面的内容)
宏任务 (setTimeout setInterval)
- 遇到宏任务,放到下一个新增任务列的最顶端
当前任务列执行完成了再去执行下一个任务列
- 当then和then的外层都有宏任务时,先创建外层的宏任务
除了setTimeout, setInterval 之外还有别的宏任务
api | 浏览器支持 | node支持 |
---|---|---|
setTimeout | 支持 | 支持 |
setInterval | 支持 | 支持 |
setImmediate | 不支持 | 支持 |
requestAnimationFrame | 支持 | 不支持 |
除了Promise.then之外还有别的微任务
api | 浏览器支持 | node支持 |
---|---|---|
process.nextTick | 不支持 | 支持 |
MutationObserver | 支持 | 不支持 |
Promise.then catch finally | 支持 | 支持 |