gpt4 book ai didi

javascript - setTimeout 在循环表达式中只发生一次

转载 作者:行者123 更新时间:2023-11-30 06:58:19 26 4
gpt4 key购买 nike

这是一个例子:

function func1()
{
setTimeout(function(){doSomething();}, 3000);
}
for(i=0;i<10;i++)
{
func1();
}

执行后,延迟仅发生在第一个循环中,但在该“for”表达式的其余循环中没有发生。

我想让延迟发生在整个循环中,而不仅仅是第一次。
我的代码有什么问题?

最佳答案

您正在安排 10 个电话,但问题是所有电话都安排在同一时间,即 3 秒后。

如果你想增量地调用它们,那么你需要增加每次调用的延迟。

一个解决方案是将延迟单元值传递给 func1,例如

function func1(i) {
setTimeout(function() {
doSomething();
}, i * 500);//reduced delay for testing
}
for (i = 0; i < 10; i++) {
func1(i + 1);
}

var counter = 0;

function doSomething() {
snippet.log('called: ' + ++counter)
}
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<!-- To show result in the dom instead of console, only to be used in the snippet not in production -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

关于javascript - setTimeout 在循环表达式中只发生一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31309693/

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