开发者社区 问答 正文

节流是什么

节流是什么

展开
收起
问答小能手! 2021-02-10 17:12:24 4463 分享
分享
版权
举报
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 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等