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

标签 javascript

有没有办法暂停 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/

相关文章:

javascript - 按 Ctrl+Shift+Del 退出 firefox 扩展

javascript - 如何在此代码中访问名称

javascript - fullpage js 和 AOS - 不能一起工作

javascript - 如何将提示中的多个输入添加到数组中?

javascript - 如何在屏幕上设置居中按钮 - native 基础

javascript - 静态网站的漂亮 URL

javascript - 使用 Bootstrap 时无法打开弹出窗口

javascript - AngularJS 中文本框更改时延迟调用函数

javascript - Chrome - 调试 WebGL 崩溃 ("Rats! WebGL hit a snag.")

javascript - ajax从服务器检索大量数据