我之前問了一下使用Ajax輪詢來自服務器的問題,使用下面的jQuery Ajax請求每3秒:如何退出jQuery的遞歸輪詢?
function getData() {
$.ajax({
url : 'http://example.com',
type: 'GET',
success : function(data) {
// process data here
setTimeout(getData, 3000);
},
dataType : 'json'
});
}
看來,這樣做的另一種方式是把外面的setTimeout $。阿賈克斯()塊:
function getData() {
setTimeout(function() {
$.ajax({
url : 'http://example.com',
type: 'GET',
success : function(data) {
//process data here
},
dataType : 'json'
}) }, 3000);
}
那麼這兩種方法有什麼區別嗎?它們每三秒鐘有連續輪詢服務器的效果嗎?
而且,成功的回調函數裏面,我該如何終止本無限的投票,如果某些條件得到滿足,比如說,data.length> 1000,然後我想終止循環和調用另一個函數?我應該這樣做:
function getData() {
var tID = setTimeout(function() {
$.ajax({
url : 'http://example.com',
type: 'GET',
success : function(data) {
//process data here
if(data.length > 1000) {
funcOutside();
clearTimeout(tID);
}
},
dataType : 'json'
}) }, 3000);
}
感謝喬恩。我想你是對的。第二個版本只投票一次。我將使用你的方法在輪詢上做有條件的停止。 – tonga