JS throttle与debounce的区别(有实现代码):https://segmentfault.com/a/1190000014292298
// 去抖就是连续多次delay内的操作取最后一次操作真正执行
// 防止用户的连续多次click提交;scroll下拉刷新时,同一位置多次请求数据
let reduceEvent
function debounce(func, wait, imme) {
let timer
return function(...rest) {
if (imme && !timer) {
func.apply(this, rest)
}
timer && clearTimeout(timer)
timer = setTimeout(() => func.apply(this, rest), wait)
}
}
// 节流就是连续多次delay内的操作按照指定的间隔来执行
// scroll设置定位等的频繁位置计算;拖拽的频繁位置计算等
function throttle(func, wait) {
let lastTime
return function(...rest) {
if (!lastTime ||
(new Date().getTime() - lastTime > wait)) {
lastTime = +new Date()
func.apply(this, rest)
}
}
}
性能提速:debounce(防抖)、throttle(节流/限频):https://www.cnblogs.com/hity-tt/p/7852888.html