我之前使用以下 jQuery Ajax 请求每 3 秒从服务器轮询一次使用 Ajax 的问题:
function getData() {
$.ajax({
url : 'http://example.com',
type: 'GET',
success : function(data) {
// process data here
setTimeout(getData, 3000);
},
dataType : 'json'
});
}
似乎另一种方法是将 setTimeout 放在 $.ajax() 块之外:
function getData() {
setTimeout( function() {
$.ajax({
url : 'http://example.com',
type: 'GET',
success : function(data) {
//process data here
},
dataType : 'json'
}) }, 3000);
}
那么这两种方法有什么区别吗?它们是否具有每 3 秒连续轮询服务器的相同效果?
另外,在成功回调函数中,如果满足某些条件,例如 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);
}