JavaScript多个时间间隔和clearInterval

 晨雨心秋-济微路唐姜合 发布于 2022-12-09 16:09

我有一个小程序,当您单击“条目”时,将打开编辑模式,而该条目是为其他人锁定的。每隔10秒就会发送一个ajax请求来更新表中的时间戳。

$(".entry-edit").click(function() {
  // code

  loopLockingVar = setInterval(function() { loopLockingFunction(id) }, 10000);

  // code
});

然后,我有一个取消按钮,将表中的时间戳更新为0并清除间隔。

$(".entry-cancel").click(function() {
  // code   

  clearInterval(loopLockingVar);

  // code
});

当仅编辑一个条目时,所有操作均有效,但是如果同时处理两个或多个条目,然后单击“取消”,则第一个条目的间隔会更远...

我试过了

var loopLockingVar;
$(".entry-edit").click(function() {
  // code

  if( ! loopLockingVar) {
    loopLockingVar = setInterval(function() { loopLockingFunction(id) }, 10000);
  }

  // code
});

但是,如果您取消并再次单击“编辑”,此方法将无法正常工作。

1 个回答
  • 您正在为同一变量分配多个时间间隔ID,该变量将仅保留最后分配给它的时间间隔ID。当您清除间隔时,只会清除与该ID对应的间隔。

    一个简单的解决方案是维护一个间隔ID数组,然后清除该数组中表示的所有间隔。代码看起来像这样:

    var intervalIds = [];
    
    $(".entry-edit").click(function() {
        intervalIds.push(setInterval(function() { loopLockingFunction(id) }, 10000));
    });
    
    $(".entry-cancel").click(function() {
        for (var i=0; i < intervalIds.length; i++) {
            clearInterval(intervalIds[i]);
        }
    });
    

    2022-12-11 02:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有