4

現在、私の Web ページには、30 秒ごとに関数を実行するタイマーがあります。

setInterval("someFunction(userId)", 30000);   

これは問題なく機能しますが、問題は、何百人ものユーザーがブラウザーを開いたままにしておくと (たとえば、ランチに行くときなど)、システムがポーリングされ、理由もなくサーバーの負荷が増加することです。

20 分後にこのタイマーの実行を停止するにはどうすればよいですか?

4

4 に答える 4

13

間隔をクリアするには、タイムアウトを 20 分に設定するだけです。

var interval = setInterval(function() {
    someFunction(userId);
}, 30000);

setTimeout(function() {
    clearInterval(interval);
}, 1000 * 60 * 20);
于 2012-10-17T16:12:47.400 に答える
2

を呼び出すとsetInterval、実行間隔へのハンドルである値が返されます。

したがって、解決策は、この間隔が実行されないようにする別の閉鎖をスケジュールすることです。

var interval = setInterval("someFunction(userId)", 30000);  
setTimeout(function(){ clearInterval(interval) }, 20 * 60 * 1000);
于 2012-10-17T16:14:12.500 に答える
0

間隔を変数として設定します。

別のタイマーを設定してその間隔をリセットするか、20 分後にポーリング スクリプトの無効フラグを設定します。

于 2012-10-17T16:14:07.523 に答える
0

これを試して:

var intervalId= setInterval(function(){
   someFunction(userId);
 }, 30000); 

setTimeout(function(){
   clearInterval(intervalId);
},20*60*1000);

setIntervalclearInterval後で渡すために使用できる intervalId を返します。

于 2012-10-17T16:14:14.390 に答える