在移动开发中会有触发比较频繁的事件,比如抢购时用户快速点击一个按钮,用户滚动屏幕引起图片的懒加载等,请完成下面函数throttle,比如:Func A = function(){};throttle(A,200)
会让A隔200ms才执行一次;
//method为传入的方法,delay为延时时间;
注:返回一个函数function throttle(method,delay){}
function throttle(method,delay){
var timer = setTimeout(function(){
mathod();
},delay);
timer = null;
}
这样写有没有问题?
再次触发,如果上一次还未执行应取消上次执行。
抢购时候的狂点,实际情况应该不用限制用户一次只能发一个请求,但发请求也应该有个最小间隔,那样可以用你说的延迟触发。
懒加载,或者点击加载之类的,我觉得应该是添加一个状态变量,用来保存目前的状态,一次只能发一个请求吧。
实际情况应该是,点击一次,如果请求还没完成,后面的连续点击都不会有效,这样限制连续点击,这种情况就不是用延迟限制用户连续触发了。
我一般防止连续点击触发时候的写法大概都是:
你没有用
clearTimeout()
来取消定时器,所以,并没有达到“函数节流”的效果。可以参考代码: