Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何清除所有非数组间隔_Javascript_Clearinterval - Fatal编程技术网

Javascript 如何清除所有非数组间隔

Javascript 如何清除所有非数组间隔,javascript,clearinterval,Javascript,Clearinterval,我在一个页面上有多个计时器,这些计时器由ajax更新启动。每个间隔都有自己的名字分配给玩家的用户名。我想在比赛结束时击败所有计时选手: 这是创建间隔的方式:findNewPlayer()在游戏中的某些事件上被调用: function findNewPlayer(){ $.ajax({ url:"check.php", success:function(data){newTimer(data)} }) } function newTimer(use

我在一个页面上有多个计时器,这些计时器由ajax更新启动。每个间隔都有自己的名字分配给玩家的用户名。我想在比赛结束时击败所有计时选手:

这是创建间隔的方式:
findNewPlayer()
在游戏中的某些事件上被调用:

function findNewPlayer(){
    $.ajax({
        url:"check.php",
        success:function(data){newTimer(data)}
    })
}

function newTimer(username){
 var username=setInterval(function() {startTimer()}, 1000);
}

function startTimer(){
    //blah blah
}
现在我想停止所有计时器,用当前玩家重新开始游戏。如何在数组中未生成的一系列用户名上使用clearInterval?我知道如果它们是数组,我可以执行以下操作,但我想找到一种方法,在窗口中获取具有不同名称的所有计时器的集合

for (i = 0; i < interValArray.length; i++) {
    clearInterval(interValArray[i]);
}
(i=0;i{ clearInterval(间隔数组[i]); }
您可以维护一个数组来保存
setTimeout
调用返回的
ID
,然后在重置时循环数组:

const timerIds = [];

function newTimer(username){
 timerIds.push(setInterval(function() {startTimer()}, 1000));
}
重置并开始使用新播放器时,需要清除计时器:

timerIds.forEach(clearInterval);

非常感谢。您使用const而不是var有什么原因吗?@AliSheikhpour根据最佳实践,建议始终使用
const
,并将数组引用设置为常量,以便以后不会意外覆盖它,现在,除非您真的有非常紧急的理由在以后更改引用,否则您应该选择
let/var
。这也将帮助您了解原因。虽然使用
const
将数组引用变为常量,但数组本身仍然非常可变,可以进行添加/删除。