在 for 循环中使用参数调用 javascript 函数:有没有办法暂停循环



我有一个数据值数组,需要反复调用一个javascript函数,这些值一个接一个作为参数。所以我正在做一个非常向前的 for 循环。我的问题:我需要暂停循环每个步骤的执行一秒钟,但我不知道该怎么做。我已经摆弄了setTimeout(),但这仅适用于整个函数,不适用于for循环的一次迭代。有没有办法在下一次迭代之前暂停 for 循环的执行?

有没有办法在下一次迭代之前暂停 for 循环的执行?

不是

正常功能,不是。您不是for循环,而是处理第一次迭代的代码,然后使用 setTimeout 重复安排下一次迭代,直到完成。搜索"setTimeout循环"将为您带来数十个示例。

async函数中,如果您为自己提供 promise 启用 setTimeout 的版本,则可以使用 for

const delay = (ms, ...args) => new Promise(resolve => setTimeout(resolve, ms, ...args);
// ...
for (let i = whatever; i < whateverElse; i += something) {
    // Do the thing, then
    await delay(1000);
}

更多关于 MDN 上的async函数。

编辑:您是否编辑了问题或其他内容,我将其阅读为迭代,然后在中间随机暂停,而不是每次迭代 1 秒

const arr = [1, 2, 3, 4, 5, 6];
function* iterateArr () {
  for (var i = 0; i < arr.length; i++) {
  	console.log(`Number ${i}`)
    yield arr[i];
  }
}
let iterate = iterateArr();
let c = 0;
while (c < 4) {
	console.log(iterate.next());
  c++;
}
console.log("OTHER CODE");
console.log(iterate.next());

最新更新