我需要一个函数,它可以循环通过一个数组,同时考虑延迟,而不是在通过数组时一次性添加延迟。
我需要什么的例子:
const array = [ 0.06, 0.08, 0.04, 0.05, 0.06, 0.03 ];
loop(array); // this is the function
userInputForStop(); // my function where something causes the array to be deleted/set to []
我试过了
const array = [ ""var array = [ "this", "is", "not", "going", "to", "work" ];
for (var i = 0; i < array.length; i++) {
(function (i) {
setTimeout(function () {
if(i == "going") array = [];
console.log(array[i])
}, 1000 * i);
})(i);
};
这个方法不起作用,因为for循环已经遍历了每一项,并且已经设置了超时,因此当项匹配"going"时,它不会停止后面的任何内容。
我看过很多关于延迟数组的帖子,尽管它们似乎都解析了数组中的所有元素,并将延迟乘以计数器(这不是我想要的)。
我想要一个循环函数,可以让我完全停止任何循环的值后,某一项目。(但也有延迟之间的每个值)
2条答案
按热度按时间rqcrx0a61#
我们可以尝试重新创建某种带有promise的sleep function in JavaScript,然后在循环中使用sleep函数,因为循环遵循
await
:如果你写一个使用这个sleep函数的异步生成器,我们可以用for-await loops来简化核心循环:
eni9jsuy2#
很难理解你的用例是什么(这会有很大帮助),但是你可以清除未来的计时器: