在javascript Angular中具有单独实例的for循环中的setInterval

时间:2018-11-13 14:03:26

标签: javascript typescript

我正在构建一个离子应用程序,并且在组件的构造函数中,我有一个循环遍历所有项目的循环。在循环中,我编写了setInterval,它从内部调用一个函数,如下所示。

var thisScope = this;
for (let i = 0; i < this.schedules.length; i++) {
    (function() {
      thisScope.showTime[i] = new Date();
      thisScope.showTime[i].setHours(0, 0, 0);
      thisScope.schedules[i].afh.timerIncDec = '00:00:00';
      if (!thisScope.timerFinish || AfhListviewComponent.timerInSeconds[i] !== 0 || thisScope.schedules[i].afh.timerIncDec != '00:00:00') {
        thisScope.timerId = setInterval(() => {          
            thisScope.timerTick(thisScope.schedules[i]);           
        }, 1000);
      } else if (thisScope.timerFinish || AfhListviewComponent.timerInSeconds[i] === 0 || thisScope.schedules[i].afh.timerIncDec === '00:00:00') {
        clearInterval(thisScope.timerId);
      }
    })();
  }

这里我要设置计时器(它的计算是在timerTick函数中完成的)。在这里,我面临的问题是被重叠的setInterval,并且其速度增加的速度小于1000。循环的每个项目都应维护自己的setInterval实例。 用作增量和减量的变量是timerInSeconds,该变量是静态写入同一组件中的。

此处1000的值被同一循环或具有更多调度的同一循环内的其他setInterval重叠。

0 个答案:

没有答案