javascriptでループ中にsleepしたい場合
いやー、一時間ほど悩んで解決しました
はじめこんな感じで実装したんですが
これだと処理が終わるまで、画面表示されずに
ただ固まった状態になっちゃうんですね(ブラウザによるのかな?)。。
for(var i=0;i<1000;++i){ alert($i); sleep(1); } function sleep(t){ var t1 = new Date().getTime(); var t2 = new Date().getTime(); while( t2 < t1 + 1000 * t ){ t2 = new Date().getTime(); } return; }
で、解決したのがこのコード
かばだんなさんが考えたコードで一発解決でした
http://blog.kabadna.com/20110719-1282/
かばだんなさん助かりました!ありがとうございます!!
// パラメータ arr = [1,3,24,126,326]; // 実処理の実行 act(); function act() { // パラメータが無くなっていれば終了 if(arr.length==0) return; // 配列の先頭を使う param = arr[0]; //TODO: 何かの処理 alert(param); // 処理済みのパラメータ削除 arr.shift(); // 次の回の実行予約 setTimeout(function(){ act(); }, 4000); // これで1回の処理は終了 }