- $(‘textarea’).on(‘keydown’, debounce(ajaxAction, 2500));
- function debounce(fn, delay){
- var timer = null; // 声明计时器
- return function() {
- var context = this;
- var args = arguments;
- clearTimeout(timer);
- timer = setTimeout(function () {
- fn.apply(context, args);
- }, delay);
- };
- }
复制代码
我希望只要在2500毫秒之内,用户再次击键,就会取消上一次的定时器,然后再新建一个定时器。这样就保证了回调函数之间的调用间隔,至少是2500毫秒。
上面这段代码是不是有问题啊?
上海网友:不会,帮顶
上海网友:timer在 局部变量,永远都是null,然后重新开始一个新的,原来的你消除不掉你,话说你的逻辑也太强悍了,想出这样的方法,一个全局变量var time;就搞定的事
北京网友:
感谢dalao,知道这段代码的问题了