宏任务(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 | 支持 | 支持 |