Open MJingv opened 5 years ago
资料来源
JS魔法堂:函数节流(throttle)与函数去抖(debounce)
事件频繁触发dom、资源重复加载导致ui崩溃
const debounce = (delay,cb)=>{
let timer;
return ()=>{
clearTimeout(timer)
timer=setTimeout(()=>{
cb()
},delay)
}
}
const throttle =(delay,cb)=>{
let now = new Data().getTime();
let last=0
if(now-last<delay) return
last=now;
cb()
}
- 可以自动"观察"元素是否可见
- 由于可见(visible)的本质是,目标元素与视口产生一个交叉区,所以这个 API 叫做"交叉观察器
- 精准控制进入可视区域的时间、距离等
- intersectionObserver API 异步,线程空闲才会执行
- shouldComponentUpdate(nextProps,nextState)【对象地址相同,不会更新】
- PureComponent【浅比较】
- immutable【深比较】
原理
双向绑定
实现方法
1. 发布订阅
2. 脏值检查
3. 数据劫持
proxy【元编程】
对比