2012-05-04 9 views
0

setInterval()の複数のインスタンスの定期的な(1分ごとの)アクティビティがブラウザで実行されているかどうか、時間を教えたり、おそらくより多くの労働力を要するアクティビティがブラウザやOSのパフォーマンスに顕著に影響するかどうかは疑問です。javascriptのsetInterval()メソッドの実行中に時間の経過とともに顕著な処理能力が消費されますか?

もし目に見えているのであれば、どのような時間枠ですか?このウェブページをあなたのブラウザで開いたままにする時間、日、週数?

おかげで、 ティム

答えて

2

(関数は本当に集中的である場合)、setInterval()で定義された関数がキャッシュされ、あなたが質問に答えるため、パフォーマンスヒット以外にするには、/ブラウザへの明確な影響があってはなりませんOS。

更新:最初の数分で目立たない場合(コードに大きなメモリリークがないと仮定した場合)、それらは無期限に実行できるはずです。

+0

hi Jiange、ありがとう。 'setInterval()'がキャッシュされていることを知っておいてよかったです。私はsetIntervalを使って時間を伝えていません。私は 'new Date();'を使用していますが、時間は定期的に更新されています。それは合理的ですよね? –

+1

申し訳ありませんが、元の質問を誤解しているはずです。 – Jlange

+0

私は思っています、正確に何がキャッシュに入れられますか? –

1

setIntervalの実際の問題は、タスクが指定した間隔よりも時間がかかる場合です。私は常に代わりにsetTimeoutを使用することを選択します。しかし、それが長い間隔/単純なタスクであれば、setIntervalはうまくいくはずです。あなたは、このタスクが実際に終了したときに応じて、次のいずれかをスケジュールすることができるように

// update a clock 
function updateClock() { 
    $('#clock').text(new Date()); 
} 

function updateClockSetTimeout(interval) { 
    updateClock(); 
    setTimeout(updateClockSetTimeout, interval); 
} 

function updateClockSetInterval(interval) { 
    setInterval(updateClock, interval); 
} 

最良の方法は、最初の実行時間を保存することです。

+0

こんにちはJuan、1分ごとに時間を伝えるのはかなり簡単なので、 'setInterval'はうまくいくようです。私は 'setTimeout'をまだ使っていません。あなたが話していることの例を私に教えてもらえますか? –

+0

素晴らしいフアン!完璧な意味合いがあります。私は未来のためにそれを心に留めておきます。 –

+1

@timpeterson私が以前に持っていたことはうまくいかず、setTimeoutのケースで一度しか更新されませんでした。今は修正されています –

関連する問題