$(document).ready(function() {
(function poll() {
setTimeout(function() {
$.ajax({
url: "/project1/api/getAllUsers",
type: "GET",
success: function(data) {
console.log("polling");
},
dataType: "json",
complete: poll,
timeout: 5000
}), 5000
});
})();
});
这只是不断执行一样快,服务器可以响应,但我希望它只会轮询每5秒。 有什么建议?
编辑:我要请求完成将是优选的后添加,5秒。
看来你已经成功地得到您setTimeout
写在错误的地方延迟的说法。
$(document).ready(function() {
(function poll() {
setTimeout(function() {
$.ajax({
url: "/project1/api/getAllUsers",
type: "GET",
success: function(data) {
console.log("polling");
},
dataType: "json",
complete: poll,
timeout: 5000
}) //, 5000 <-- oops.
}, 5000); // <-- should be here instead
})();
});
如果按照大括号,你会看到,我们在调用setTimeout
,如:
setTimeout(function () {
$.ajax(), 5000
})
并应
setTimeout(function () {
$.ajax();
}, 5000)
这应该叫AJAX投票5秒前一个完成后。
如果要查询每5秒完成最后的请求后不一定5秒,你可以使用的setInterval。 不知道这是可以接受的,但它将使递归不必要的。
function poll() {
$.ajax({
url: "/project1/api/getAllUsers",
type: "GET",
success: function(data) {
console.log("polling");
},
dataType: "json"
});
}
setInterval(poll, 5000);
柜面你想使用jQuery的承诺语法,而不是回调的语法这里的另一个整洁的方式。
function poll() {
$.get('http://your-api-endpoint.com')
.done(function() {
// 200 - OK response
})
.fail(function() {
// Error Response
})
.always(function () {
setTimeout(function() {
poll();
}, 5000);
});
}
poll();