如何在循环中setTimeout

时间:2016-04-15 03:31:50

标签: javascript

您是否尝试设置超时以运行多个功能并在它们之间有一些延迟? for循环中是否超时?你的功能是否同时启动,不遵守超时,或导致凌乱的行为?

这是直观的,但写不出来是错误的:

for (var i = 0; i < moves.length; i++) {
  setTimeout(chooseOne(moves[i]), i * 1000 + 1000);
}

SOLUTION:

解决方案是将i值间接传递给超时,就像这样。编写循环,在循环内调用超时函数,并将该函数传递给i值。

function clickedOne() {
    for (var i = 0; i < moves.length; ++i) {
      myTimeout(i);
    }
}

然后在一个单独的函数中,设置超时,传递一个匿名函数作为你的第一个参数,在该函数中我调用我的chooseOne函数并为每次迭代传递唯一值。现在你可以编写一个逗号,并为setTimeout提供第二个参数,即你的超时。我的超时是我的一秒钟,因此每个函数将在它之前的一个函数之后执行一秒钟。

function myTimeout(i) {
  setTimeout(function() { chooseOne(moves[i]); }, 1000 * i);
}

我实际上并不知道为什么会这样,而第一种方法则不然。

1 个答案:

答案 0 :(得分:-1)

试试这个:

string mystring = "Hello World";

IConvertible convertible = mystring as IConvertible.