/**
* 闭包节流函数方法(可传参数)
* @param Function fn 延时调用函数
* @param Number delay 延迟多长时间
* @return Function 延迟执行的方法
*/
var throttle = function (fn,delay) {
var timer = null;
return () {
var args = arguments; //参数集合
clearTimeout(timer);
timer = setTimeout( () {
fn.apply(this,args);
},delay);
}
}
*
* 要执行的方法
* @param String name 传递的参数
postFun(name) {
document.writeln("名字:" + name);
}
================测试部分 => 【1s重复点击10次】
var t = throttle(postFun,1000);
var ejector = setInterval(() => {
t("tiger");
},100);
setTimeout(() => {
clearInterval(ejector);
},1000);
*
* 普通节流函数方法
* @param Function fn 延时调用函数
* @param Number delay 延迟多长时间
throttle(fn,1)">if (fn._id) {
clearTimeout(fn._id);
}
fn._id = window.setTimeout(() => {
fn();
fn._id = ;
},delay);
}
*
* 要执行的方法
postFun() {
document.writeln(new Date().getTime());
}
var interval = setInterval(() => {
throttle(postFun,1000 {
clearInterval(interval);
},1000);
var lock = false;
jQuery("#submit").on('click', () {
(lock) {
;
}
lock = true;
jQuery.post(url,data, (response) {
TODO:业务代码
lock = ;
});
});