Javascript 如何清除所有非数组间隔
我在一个页面上有多个计时器,这些计时器由ajax更新启动。每个间隔都有自己的名字分配给玩家的用户名。我想在比赛结束时击败所有计时选手: 这是创建间隔的方式:Javascript 如何清除所有非数组间隔,javascript,clearinterval,Javascript,Clearinterval,我在一个页面上有多个计时器,这些计时器由ajax更新启动。每个间隔都有自己的名字分配给玩家的用户名。我想在比赛结束时击败所有计时选手: 这是创建间隔的方式:findNewPlayer()在游戏中的某些事件上被调用: function findNewPlayer(){ $.ajax({ url:"check.php", success:function(data){newTimer(data)} }) } function newTimer(use
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
将数组引用变为常量,但数组本身仍然非常可变,可以进行添加/删除。