0
我使用遞歸一個定時器,模擬的setInterval,同時防止它在自身上,例如運行:clearSetTimeout,防止setTimeout的公司從堆放
this.poll = function() {
var self = this;
if(self.timeout) {
clearTimeout(self.timeout)
}
self.timeout = setTimeout(function(){
self.request();
}, 1000);
}
self.request();
包含AJAX邏輯並調用this.poll()
。
問題是,當this.poll
被再次調用時,它似乎沒有真正清除超時,並且最終導致大量請求相互重疊。
有沒有更好的方法來處理這個問題?
謝謝!
'self.request();包含ajax邏輯並調用this.poll()' - 請求'立即調用'poll',還是在其Ajax回調中調用?如果它立即執行,那麼我希望你最終會得到大量的請求,因爲'request'產生了一個新的Ajax請求,然後立即排隊一個新的請求在下一秒運行,可能在舊請求之前已解決。 (除非你的意圖實際上是每隔一秒輪詢一次)。 – apsillers
'request'在ajax回調中調用'poll',意圖是每秒運行一次。但是現在,如果我刷新頁面幾次,我會在開始時收到一些請求。 – dzm
如果刷新頁面,則會導致超時,從而清除JavaScript。你所看到的是來自上一頁加載的舊請求。 – epascarello