Oct

2013

24

Javascipt の時間を考える。繰り返しの処理を何秒後かに止める

手法1. (new Date).getTime() でループを制御

Long-Shadow-Generator
何秒間かループ処理を繰り返す例です。

ループの条件がもっと何かいい方法がありそうですが、力至らず。
ブラウザの状況によるみたいですが、この書き方で最高一秒間に170,000回ぐらい回りました。

例. for文


<script>


//ループ前の時間を取得して、1秒後を足しておく
var t = (new Date).getTime() + 1000; 

//ループの度に時間を取得して一秒後( t 以上)になったら終了。
for ( i = 0 ; (new Date).getTime() < t ; i++){   
    document.write( i + "テスト中<br>"); 
}  

</script>

(new Date)は、new Date()と同じです。なんとなく(new Date)のほうが見やすくて最近こちらを使ってます。

例. while文

<script>

//ループ前の時間を取得して、1秒後を足しておく
var t = (new Date).getTime() + 1000; 
    
//ループの度に時間を取得して一秒後( t 以上)になったら終了。
var i = 0;
while ( (new Date).getTime() < t ){   
    document.write( i + "テスト中<br>"); 
    i++;
}  

</script>

getTimerについて詳しくはこちらをどうぞ

 

手法2. Date.now() ※IE9+

ほぼ一緒ですが、こちらのほうが少しだけ早い気がします。
ただ、IEは9以上でないとダメです。
他のブラウザはほぼ大丈夫。

<script>

//ループ前の時間を取得して、1秒後を足しておく
var t = Date.now() + 1000;
    
//ループの度に時間を取得して一秒後( t 以上)になったら終了。
for ( i = 0 ; Date.now() < t ; i++){   
    document.write( i + "テスト中<br>"); 
}  

</script>

Date.now()について詳しくはこちらをどうぞ

広告


Comments are closed.