Sunday, 15 March 2015

settimeout - JavaScript : For loop with timeout -



settimeout - JavaScript : For loop with timeout -

i want loop should not executed @ once, wait timeout after each iteration. eg :

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

i found many solutions on stack-overflow 1 :

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

but in implementations, loop waits 3000 , executes whole loop @ once. there way each iteration called after waiting 1000.

you can work out simple math :

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 ...

following comments

it seem request bit blurry. if want after lastly timeout, can set limit , compare current index :

var limit = 10 (var i=0;i<=limit;i++) { (function(ind) { settimeout(function(){ console.log(ind); if(ind === limit){ console.log('it lastly one'); } }, 1000 + (3000 * ind)); })(i); }

fiddle : http://jsfiddle.net/tn4a7/

i think know want...

and do

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

javascript settimeout

No comments:

Post a Comment