2015-12-21 44 views
-2

我的ajax函數每15秒鐘工作一次。我想在2分鐘後停止它。我想在2分鐘後停止ajax請求

我該怎麼做?

window.setInterval(function() { 
     var request = $.ajax({ 
     ... 
     }) 
}, 15000); 
+1

erm ...其他代碼發生了什麼? – RamRaider

回答

5

使用clearInterval,該clearInterval()方法清除將定時器與setInterval()方法設置。

var request; 
 
var _timer = setInterval(function() { 
 

 
    request = $.ajax({ 
 
    ... 
 
    }); 
 

 
}, 15 * 1000); 
 

 
setTimeout(function() { 
 

 
    clearInterval(_timer); 
 
    request.abort(); // If you want to abort the xhr which are still executing after 2 minutes 
 

 
}, 2 * 60 * 1000);

+0

另一種選擇是在主定時器重複七次後執行此操作。 – nicael

+0

@nicael是的,你也可以做到這一點。 – void

+0

你好,謝謝你 – Iyadh

1
var t=0; 
var i=15000; 
var m=Math.abs(2 * 60 * 1000); 

var tmr=window.setInterval(function() { 
    var request = $.ajax({ /* do something */ }); 
    t+=i; 
    if(t >= m) clearInterval(tmr); 
}, i); 

注意到@Jay!

幾乎與@void發佈的答案一樣 - 除了不殺死活動的ajax請求。要取消時間間隔,必須將其指定爲調用clearInterval方法時可引用的變量。

+1

爲什麼OP應該這樣做?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,而且是爲了將來SO的訪問者。 –