开发者社区 问答 正文

节流是什么

节流是什么

展开
收起
问答小能手! 2021-02-10 17:12:24 4492 分享 版权
1 条回答
写回答
取消 提交回答
  • 来自昆仑山,真名陆离。

    节流:每隔一段时间后执行一次,也就是降低频率,将高频操作优化成低频操作,通常使用场景: 滚动条事件 或者 resize 事件,通常每隔 100~500 ms执行一次即可。
    实现逻辑:规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效 实现代码:

    //定时器
    const throttle = function (func, delay) {
      let timeoutId = null;
      return function (...args) {
        if (!timeoutId) {
          timeoutId = setTimeout(function () {
            func.apply(this, args);
            timeoutId = null
          }, delay);
        }
      }
    }
    
    // 时间戳
    const throttle = function(func, delay) {
        let prev = Date.now();
        return function(...args) {
            let now = Date.now();
            if (now - prev >= delay) {
                func.apply(this, args);
                prev = Date.now();
            }
        }    
    }
    
    
    2021-02-10 17:14:11
    赞同 展开评论
问答地址: