Javascript:等待For循环中的一个(或多个)条件

Javascript: Waiting for one (or multiple) condition in For Loop

我想在 For 循环中检查 k 次条件是否为真,每次我想等待 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里面时我没有更改。

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

不需要按照我上面说的方式,我想做的是-

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

请发表评论以进一步说明。

你可以抽空检查一下计数器。

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

您可以编写一个带有两个参数的函数:

  1. howManyTimes - 您要迭代的次数

  2. howOften - 您希望以多长时间间隔进行检查(以毫秒为单位)

function checkInIntervals(howManyTimes, howOften) {
 var counter = 0;
  
 var interval = setInterval(function() {
        counter++;
        if (counter === howManyTimes) {
         clearInterval(interval);
        }
       // do something
        console.log(counter, 'iteration')
    }, howOften)
}

// run the function
checkInIntervals(10, 2000);

在间隔内计数器递增,当它等于所需的迭代次数时,间隔被清除并停止执行。