实现JavaScript函数节流
2018-02-07 13:21
232 查看
为了避免函数被触发的频率太高,便用函数节流来实现控制触发频率
var throttle = function(fn, interval){
var _self = fn;//保存需要运行的函数
var timer; //定时器
var firstTime = true;//用于判断是否第一次调用
return function(){
var args = arguments;
var _me = this;
if(firstTime){ //如果第一次调用,直接执行fn
_self.apply(_me,
args);
return
firstTime = false;
}
if(timer){//定时器还在 ,说明前一段延迟执行还没有完成
return
false;
}
timer = setTimeout(function(){//延迟一段时间执行
clearTimeout(timer);
timer
= null;
_self.apply(_me,
args);
}, interval || 500);
};
}
var throttle = function(fn, interval){
var _self = fn;//保存需要运行的函数
var timer; //定时器
var firstTime = true;//用于判断是否第一次调用
return function(){
var args = arguments;
var _me = this;
if(firstTime){ //如果第一次调用,直接执行fn
_self.apply(_me,
args);
return
firstTime = false;
}
if(timer){//定时器还在 ,说明前一段延迟执行还没有完成
return
false;
}
timer = setTimeout(function(){//延迟一段时间执行
clearTimeout(timer);
timer
= null;
_self.apply(_me,
args);
}, interval || 500);
};
}
相关文章推荐
- OpenCV学习笔记(16)双目测距与三维重建的OpenCV实现问题集锦(一)图像获取与单目定标
- javamail实现邮件接收
- javascript实现全选全不选
- 手写实现一个可重入锁!
- 【排序算法1】Java实现冒泡、选择、插入排序
- PHP+ajax实现获取新闻数据简单示例
- 深入理解Git的实现原理
- node.js实现多图片上传实例
- VB.NET 实现DataGridView CheckBox列状态变更触发事件,获取其状态值
- Javascript中的类实现
- Java实现几种常见排序方法(上)
- 自定义scrollview实现类似地图横向纵向同时滚动
- java实现遍历树形菜单方法——设计思路【含源代码】
- 【神经网络】11行Python代码实现的神经网络
- linux下编程实现GPS数据获取与解析
- Android 实现2个ListView垂直排列
- ASP.net中实现基于UrlRewrite的防盗链功能
- KMeans算法原理解析与实现
- 修改别人写的利用AOP实现日志监控的问题
- Jquery实现仿腾讯微博发表广播