首页 > 解决方案 > Javascript:在 For 循环中等待一个(或多个)条件

问题描述

我想k在 For 循环中检查时间条件是否为真,每次我想等待 2 秒,然后我想进行 for 循环的下一次迭代。例如,我尝试了类似下面的东西 -

var k = 0;
for (let i = 0; i < B.length; i++) {
  setTimeout(function F_stTimer() {
      if (B[i].innerText === "S") {
        var A = "True"; //just for example
        if (A === true && k == 0) {
          // Do something
          k = k + 1;
          i = i - 1; // so , I can check the ith element again once start the loop again
        } //if
        else if (A === true && k > 0 && k < 5) { //checking 5 times for A to be false

          k = k + 1;

        }, i * 2000);
      i = i - 1;
    } //if
    else if (A === true && k == 5) {
      k = 0;
    } //if

  } // if 
}, 5000);
} // i loop

但是上述类型的代码不起作用,因为它在里面时我没有更改setTimeout

无论如何,任何人都可以帮助我解决我遇到的问题吗?

不需要按照我上面提到的方式,我想做的是——

在 For 循环中检查k时间条件是否为真,每次我想等待 t 秒(每个延迟的持续时间/延迟间隔),之后,我想进行 for 循环的下一次迭代。

请评论进一步澄清。

标签: javascriptfor-loopwait

解决方案


您可以间隔一段时间并检查计数器。

var counter = 0,
    interval = setInterval(function () {
        counter++;
        if (counter === 5) {
            counter = 0;
            console.log('five');
        } else {
            console.log('not five');
        }
    }, 1000);


推荐阅读