1. $(‘textarea’).on(‘keydown’, debounce(ajaxAction, 2500));
  2. function debounce(fn, delay){
  3.   var timer = null; // 声明计时器
  4.   return function() {
  5.     var context = this;
  6.     var args = arguments;
  7.     clearTimeout(timer);
  8.     timer = setTimeout(function () {
  9.       fn.apply(context, args);
  10.     }, delay);
  11.   };
  12. }

复制代码

我希望只要在2500毫秒之内,用户再次击键,就会取消上一次的定时器,然后再新建一个定时器。这样就保证了回调函数之间的调用间隔,至少是2500毫秒。

上面这段代码是不是有问题啊?
上海网友:不会,帮顶
上海网友:timer在 局部变量,永远都是null,然后重新开始一个新的,原来的你消除不掉你,话说你的逻辑也太强悍了,想出这样的方法,一个全局变量var time;就搞定的事
北京网友:
感谢dalao,知道这段代码的问题了

01-12 02:44