清除所有 运行 间隔

Clear all running intervals

我正在尝试使用相同的 ID 同时清除所有间隔。

这样做的原因是多个代理可以向他们发起呼叫,因此它可以相应地工作,但是当涉及多个 agent/interval 时,间隔不会被清除,据我所知,clearInterval 只会清除最后一个间隔。

是否可以用同一个ID同时清除所有Intervals?或者只是清除所有间隔?

我查看了关于同一主题的其他问题,但对我没有用,想知道是否有处理此问题的最新方法。

基本代码思路:

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的区间?

感谢@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")
            }
        }
    }
}