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);
您可以编写一个带有两个参数的函数:
howManyTimes - 您要迭代的次数
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);
在间隔内计数器递增,当它等于所需的迭代次数时,间隔被清除并停止执行。
我想在 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);
您可以编写一个带有两个参数的函数:
howManyTimes - 您要迭代的次数
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);
在间隔内计数器递增,当它等于所需的迭代次数时,间隔被清除并停止执行。