js 种的那些方法是微任务和宏任务
微任务
方法 | 浏览器 | Node | 描述(用法) |
---|---|---|---|
Promise (prototype原型链下方法都是微任务)then catch finally | √ | √ | 解决异步问题 |
async / await (async 函数返回的是Promise.resolve 的数据 ,await 接收Promise.then()的数据 ) | √ | √ | 解决异步回调问题 |
MutationObserver | √ | √ | 监视对DOM树所做更改可以 可以监听DOM插入–网站被插广告可以用它监听,并且阻止插入链接– MDN |
宏任务
方法 | 浏览器 | Node | 描述(用法) |
---|---|---|---|
setTimeout | √ | √ | 延迟xxx/s执行 |
setInterval | √ | √ | 间隔xxx/s执行 |
setImmediate | × | √ | 长时间运行的操作(兼容性差)MDN |
requestAnimationFrame | √ | × | 请求动画帧(可以用来做节流,性能比setTimeout 好) MDN. |
addEventListener | √ | × | 某个DOM原数添加事件,这个事件有浏览器通知 |
event loop(事件循环/事件轮询)
我们先要明白几个概念
1,js是单线程的,代码是一行一行执行的,