gpt4 book ai didi

javascript - 有什么方法可以暂停for循环直到变量为真

转载 作者:行者123 更新时间:2023-11-30 07:32:45 25 4
gpt4 key购买 nike

有没有办法暂停 for 循环直到变量为真?例如,如果我有这段代码,

var flag = false; 
for(var i = 0; i < 15; i++){
console.log(i);
}

并且 i 等于 7,我可以暂停循环直到 flag = true 吗?

谢谢!

最佳答案

JavaScript 是一种基于事件的单线程模型:如果您可以暂停执行,您就无法在那段时间评估您的标志。

此外,如果标志的值取决于用户事件,您希望等待事件触发而不是变量更改。

如果像您的示例一样,您事先知道何时要暂停循环,则应该将其拆分:

for(var i = 0; i <= 7; i++){
console.log(i);
}

document.querySelector("button").onclick = function() {
for(var i = 8; i < 15; i++){
console.log(i);
}
}

如果您不知道(因为它是在 for 循环中决定的),您只需要确保下次循环从它停止的点开始(例如,通过重用i 变量)。

for (var i = 0; i < 15; i++) {
console.log(i);
if (Math.random() < 0.2) { break; }
}

document.querySelector("button").onclick = function() {
for (i++; i < 15; i++) {
console.log(i);
}
}

如果循环中的代码很长,您可以将其包装在一个函数中(感谢@tom):

function logIndex() {
//some code
console.log(i);
}

实际上,您可以在单个函数中隔离管理循环和用户事件的所有逻辑,该函数递归地为用户事件创建处理程序以调用自身。它的另一个优点是您可以根据需要多次停止循环。

var button = document.querySelector("button");

function logIndexes(index) {
for (index; index < 15; index++) {
console.log(index);
if (Math.random() <= 0.2) {
return button.onclick = function() {
logIndexes(index + 1);
}
}
}
button.onclick = null;
}

logIndexes(0);
<button>Click me!</button>

关于javascript - 有什么方法可以暂停for循环直到变量为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45701488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com