有些事件我们是无法控制触发频率的。 如鼠标移动事件onmousemove, 滚动滚动条事件onscroll,窗口大小改变事件onresize,瞬间的操作都会导致这些事件会被高频触发。
Debounce:去抖动/防抖
多次触发一个事件,当事件被触发时,延迟一定的时间执行,当延迟的这个时间内再次触发时,则清除定时器,再次设定延迟执行。
场景:
search搜索,用户在不断输入值时,用防抖来节约请求资源。
Throttle :节流
在n秒内只会执行一次,所以节流会稀释函数的执行频率.
场景:
scroll 事件,每隔一秒计算一次位置信息等比如是否滑到底部自动加载更多
调整浏览器窗口大小时,resize次数过于频繁,造成计算过多