0

setInterval()ブラウザーで実行されている複数のインスタンスの定期的な (毎分) アクティビティが時間を伝えるかどうか、またはより労働集約的なアクティビティが実際にブラウザーや OS のパフォーマンスに顕著な影響を与える かどうか疑問に思っています。

そして、それらが目立つ場合、どのような時間枠で? この Web ページをブラウザで開いたまま何時間、何日、何週間も放置していませんか?

ありがとう、ティム

4

2 に答える 2

2

あなたの質問に答えるために、によって定義された関数setInterval()はキャッシュされるため、パフォーマンスの低下以外に (関数が非常に集中している場合)、ブラウザー/OS に顕著な影響はないはずです。

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

于 2012-05-04T23:49:31.770 に答える
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);
}

最善の方法は、最初の実行時間を保存して、このタスクが実際にいつ終了したかに応じて次の実行をスケジュールできるようにすることです。

于 2012-05-04T23:58:43.183 に答える