当前位置: 首页 > 面试题库 >

JavaScript:For循环超时

惠凯歌
2023-03-14
问题内容

我希望我的for循环不应该一次执行,而要在每次迭代后等待超时。例如:

for(var i=0; i<10; i++) {
    console.log(i);
    //wait for 1000
}

我发现了很多关于堆栈溢出的解决方案,例如:

for (var i=0;i<=10;i++) {
   (function(ind) {
       setTimeout(function(){console.log(ind);}, 3000);
   })(i);
}

但是在所有实现中,循环最初等待3000毫秒,然后立即执行整个for循环。有没有一种方法可以等待1000毫秒后调用每次迭代。


问题答案:

您可以使用简单的数学方法来解决:

for (var i=0;i<=10;i++) {
   (function(ind) {
       setTimeout(function(){console.log(ind);}, 1000 + (3000 * ind));
   })(i);
}

1000ms:0
4000ms:1
7000ms:2
10000ms:3
13000ms:4



跟随评论

您的请求似乎有点模糊。如果您想在上一次超时后执行某项操作,则可以设置一个限制并比较当前索引:

var limit = 10
for (var i=0;i<=limit;i++) {
   (function(ind) {
       setTimeout(function(){
           console.log(ind);
           if(ind === limit){
               console.log('It was the last one');
           }
       }, 1000 + (3000 * ind));
   })(i);
}

我想我知道你想要什么…

它只是要做

for (var i=0;i<=10;i++) {
   (function(ind) {
       setTimeout(function(){console.log(ind);}, 1000 * ind);
   })(i);
}


 类似资料:
  • 专家。Javascript没有产生期望的延迟效果<从其他问题开始,我知道,问题在于settimeout和我使用它的方式。但我仍然无法理解Settimeout是如何工作的。所以我把代码放在这里。出于知识目的,只需要使用Javascript 事实上,我正试图用javascript来澄清我关于这个闭包的概念。它们是Javascript中扭曲的东西吗?

  • 问题内容: 我正在测试一次删除很多记录的过程。不能,因为其中存在需要保留的记录。 由于数量巨大,我将删除操作分成了类似于以下的循环: MyTable是一个群集表。MyField在聚集索引的第一列中。它表示记录的逻辑分组,因此经常选择许多记录。我不在乎删除它们的顺序,只要一次处理一组即可。该表上没有其他索引。 我添加了提示以避免尝试在生产中看到锁升级。我添加了提示,以避免删除其他进程锁定的记录。那永

  • 这个脚本应该以随机生成的延迟滚动浏览网站上的每个容器。对于循环中的每次迭代,我要将ms的“暂停”替换为一个在和秒之间随机生成的数字。 随机数生成器: 就像这样工作很好。在每次迭代之后,会有2秒的暂停。但是,当我移除注释以添加行以随机化每次迭代之间的时间时,值(它应该滚动到哪个容器)一开始很好,但后来也变成随机的。 控制台输出: 我该怎么解决这个?

  • 您好,我对jquery没有什么问题。首先,我有: 大众BORA 1.9TDI 1990 1995 奥迪A3 2.0TFSI 2006 2008 但我想实现: VW BORA 1.9TDI 1990 VW BORA 1.9TDI 1991 VW BORA 1.9TDI 1992 VW BORA 1.9TDI 1993 VW BORA 1.9TDI 1994 VW BORA 1.9TDI 1995 A

  • 问题内容: 我第一次不了解PHP。我一直在脚本中使用for循环,while循环,foreach循环。我想知道 哪一个性能更好? 选择循环的标准是什么? 当我们在另一个循环中循环时应该使用哪个? 我一直想知道要使用哪个循环的代码。 很明显,我可以使用while编写上面的代码。希望有人能帮助我找出哪个循环更适合使用。 问题答案: 哪一个性能更好? 没关系 选择循环的标准是什么? 如果只需要遍历对象或数

  • 问题内容: 给出以下列表 我想创建一个新列表,该列表由将当前值和下一个值相加的元素组成。它将包含 1 小于元件。 像这样: (从0 + 1、1 + 2和2 + 3) 这是我尝试过的: 问题是我不断收到此错误: 我很确定会发生这种情况,因为当我得到(3)的最后一个元素时,我无法将其添加到任何东西中,因为这样做超出了它的值(添加3之后就没有值了) )。因此,我需要告诉代码在2处停止,同时仍引用3进行计