我有一个数据值数组,需要反复调用一个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());