2012-12-31 38 views
1

我有一個頁面,其中包含一個倒計時和一些數據,我使用AJAX進行刷新。爲了減輕服務器的負載,我做了AJAX刷新間隔取決於倒計時的剩餘時間下面就http://reallifejs.com/brainchunks/repeated-events-timeout-or-interval/使用自適應時間間隔進行AJAX刷新

指令例如有一分鐘的刷新間隔,如果剩餘時間少於一天刷新的間隔5分鐘,如果剩餘時間超過一天我更多有這樣的事情:

var doStuff = function() { 
    // Do stuff 
    var remainingTime = JSONData.restTime; 

    if(remainingTime > one day) { 
     setTimeout(doStuff, 300000); 
    } else { 
     setTimeout(doStuff, 60000); 
    } 
}; 

setTimeout(doStuff, 60000); 

的「REMAININGTIME」是從一個用於刷新JSON拍攝。現在一切正常。儘管如此,我還是想做一個改進,因爲第一次AJAX調用是在加載頁面一分鐘後完成的(基於上面代碼中的最後一個「SetTimeout」)。理想情況下,我將以同樣的方式依賴於休息時間進行第一次呼叫,即如果超過一天還有5分鐘後第一次呼叫,如果還剩不到一天,則第一次呼叫在1分鐘後呼叫。

我怎樣才能讓這取決於剩餘的時間?

回答

1

不是最初打電話給setTimeout,難道你不能直接叫做doStuff嗎?

var doStuff = function() { 
    // Do stuff 
    var remainingTime=JSONData.restTime; 
    if(remainingTime>one day) { 
    setTimeout(doStuff, 300000); 
    } else { 
    setTimeout(doStuff, 60000); 
    } 
}; 

doStuff(); 

或者,如果JSONData沒有加載的是,從第一AJAX成功回調調用doStuff

相關問題