设为首页收藏本站

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 18|回复: 2

请教JS大佬

[复制链接]

152

主题

359

回帖

1208

积分

金牌会员

积分
1208
发表于 2019-7-18 14:06:21 | 显示全部楼层 |阅读模式
[ol]
  • $('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);
  •   };
  • }[/ol]复制代码


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

    上面这段代码是不是有问题啊?
  • 回复

    使用道具 举报

    3

    主题

    57

    回帖

    131

    积分

    注册会员

    积分
    131
    发表于 2019-7-18 14:22:45 | 显示全部楼层




    不会,帮顶
    回复

    使用道具 举报

    64

    主题

    600

    回帖

    1414

    积分

    金牌会员

    积分
    1414
    发表于 2019-7-18 14:27:23 | 显示全部楼层

    adminw 发表于 2019-7-18 14:27

    timer在 局部变量,永远都是null,然后重新开始一个新的,原来的你消除不掉你,话说你的逻辑也太强悍了,想 ...


    感谢dalao,知道这段代码的问题了
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-12-20 00:47 , Processed in 0.015457 second(s), 4 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表