debounce(防抖)、throttle(节流/限频)

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

什么是防抖和节流?https://www.cnblogs.com/cuixiaohua/p/12709663.html

原文地址:https://www.cnblogs.com/myc-xiaochaochao/p/13955246.html