setInterval()
ブラウザーで実行されている複数のインスタンスの定期的な (毎分) アクティビティが時間を伝えるかどうか、またはより労働集約的なアクティビティが実際にブラウザーや OS のパフォーマンスに顕著な影響を与える かどうか疑問に思っています。
そして、それらが目立つ場合、どのような時間枠で? この Web ページをブラウザで開いたまま何時間、何日、何週間も放置していませんか?
ありがとう、ティム
setInterval()
ブラウザーで実行されている複数のインスタンスの定期的な (毎分) アクティビティが時間を伝えるかどうか、またはより労働集約的なアクティビティが実際にブラウザーや OS のパフォーマンスに顕著な影響を与える かどうか疑問に思っています。
そして、それらが目立つ場合、どのような時間枠で? この Web ページをブラウザで開いたまま何時間、何日、何週間も放置していませんか?
ありがとう、ティム
あなたの質問に答えるために、によって定義された関数setInterval()
はキャッシュされるため、パフォーマンスの低下以外に (関数が非常に集中している場合)、ブラウザー/OS に顕著な影響はないはずです。
更新: 最初の数分以内に目立たない場合 (コードに大きなメモリ リークがない場合)、それらは無期限に実行できるはずです。
本当の問題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);
}
最善の方法は、最初の実行時間を保存して、このタスクが実際にいつ終了したかに応じて次の実行をスケジュールできるようにすることです。