首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【说站】javascript函数节流实现的两种方式

【说站】javascript函数节流实现的两种方式

作者头像
很酷的站长
发布2022-11-24 11:45:16
发布2022-11-24 11:45:16
5910
举报

javascript函数节流实现的两种方式

1、用时间戳判断是否已到回调执行时间,记录上次执行时间戳,然后每次触发事件时执行回调,回调判断当前时间戳距离上次执行时间戳的时间间隔是否为*s。

如果是,则执行,并更新上次执行时间戳,如此循环。

代码语言:javascript
复制
var throttle = function(delay, action) {
    var last = 0;
    return function() {
        var curr = new Date();
        if (curr - last > delay) {
            action.apply(this, arguments);
            last = curr;
        }
    }
}

2、使用定时器。

比如,当scroll事件刚触发时,打印一个hello world ,然后设置一个1000ms的定时器,此后每次触发scroll事件,触发回调,如果已经存在定时器,则回调不执行方法,知道定时器出发,handler被清除,然后重新设置定时器。

代码语言:javascript
复制
var throttle = function(delay, action) {
    var timeout;
    var later = function () {
        timeout = setTimeout(function(){
            clearTimeout(timeout);
            // 解除引用
            timeout = null;
        }, delay);
    };
    later();
    if (!timeout) {
        action.apply(this, arguments);
        later();
    }
}

以上就是javascript函数节流实现的两种方式,希望对大家有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • javascript函数节流实现的两种方式
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档