setTimeout(fn,delay)
запускает данную функцию fn
после задержки delay
в мс. Таким образом, вы можете просто умножить i
к 2000 году и использования:
for(;i<5;i++) {
setTimeout(function(){console.log(z);},2000*i);
}
Если вы хотите сообщить или использовать i
в fn
, вы должны создать функцию, которая возвращает функцию для использования в setTimeout
, используя замыкание, чтобы сообщить или использование i
. В следующем i
заключен с использованием переменной x
, используемый немедленно вызывается анонимной функции, создающей объект функции f
для последующего использования в setTimeout
:
for(var i=0;i<5;i++)
{
var f = function(x){
return function(){console.log(z+'#'+x);}
}(i);
setTimeout(f,2000*i);
}
jsFiddle
Приращение задержка? '2000 * i' – elclanrs
Таймеры все стреляют * в то же время * - помните, что setTimeout * немедленно возвращается * (он не блокируется), и поэтому все setTimeouts * созданы одновременно * и все они настроены на огонь с тем же интервалом (2000 мс) в будущем с момента их создания. – user2246674
ОК, если я поставил 2000 * i.It работает. Но если я ставлю 2000 + i, это будет отображаться на одном снимке. Почему так? –