javascript - 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 循环的下一次迭代。
请评论进一步澄清。
解决方案
您可以间隔一段时间并检查计数器。
var counter = 0,
interval = setInterval(function () {
counter++;
if (counter === 5) {
counter = 0;
console.log('five');
} else {
console.log('not five');
}
}, 1000);
推荐阅读
- c# - ReSharper NUnit3 - 使用没有复制本地副本的 dll
- python - Pytorch NLP 模型在进行推理时不使用 GPU
- javascript - 如何在函数外传输数据
- google-cloud-platform - 在 Google Cloud Run 中容器化应用程序时出现 Docker 错误
- javascript - JS棋盘阅读器Y坐标问题
- python - 与 python 类似的句子 like bash with jq
- r - 在数据集中使用过滤器功能时的问题
- docker - Docker:Openjdk:14 基于 RHEL 的映像,无法安装 yum/wget/netstat
- mysql - 在 AWS Aurora (MySQL) 数据库中重命名架构的最简单方法是什么?
- php - 贝宝智能订阅服务器端