我试图使用相同的ID同时清除所有间隔。
这样做的原因是多个代理可以有来自它们的调用,因此它可以正常工作但是当涉及多个代理/间隔时,间隔不会被清除,并且据我所知,clearInterval只会清除最后一个间隔
是否可以使用相同的ID同时清除所有间隔?或者只是清除所有间隔?
我查看了有关同一主题的其他问题,但对我没有用,并想知道是否有最新的处理方法。
基本代码理念:
var extenArray = [];
//Passport.js
app.get('/index', checkLoggedIn, function (req, res) {
res.render('index', {
isAuthenticated : req.isAuthenticated(),
user : req.user
});
if(extenArray.length > 0){
intervalId = setInterval(bridgeCall, 10000);
console.log("Running");
}
});
function bridgeCall() {
if (extenArray.length > 0) {
console.log("Begin!")
console.log("value removed from array");
} else {
error = ("No extensions left to dial");
Error();
if(extenArray.length < 1){
clearInterval(intervalId);
console.log("Cleared Interval")
}
}
}
每次调用扩展名时,都会从数组中删除它,但我希望尽可能保留代码示例,但如果需要,可以将其充实。
有没有办法同时清除所有具有相同ID的间隔?
答案 0 :(得分:0)
感谢@JaromandaX的建议,我配置了我的代码,它根据建议工作,将所有的间隔ID保存在一个数组中。
对给定的代码示例进行了修改:
var extenArray = [];
var interVal = [];
//Passport.js
app.get('/index', checkLoggedIn, function (req, res) {
res.render('index', {
isAuthenticated : req.isAuthenticated(),
user : req.user
});
if (extenArray.length > 0) {
intervalId = setInterval(bridgeCall, 10000);
interValArray.push(intervalId);
console.log("Running");
}
});
function bridgeCall() {
if (extenArray.length > 0) {
console.log("Begin!")
console.log("value removed from array");
} else {
error = ("No extensions left to dial");
Error();
if (extenArray.length < 1) {
for (i = 0; i < interValArray.length; i++) {
clearInterval(interValArray[i]);
console.log("Cleared Interval")
}
}
}
}