Javascript 使用setTimeout的jQuery递归ajax轮询
这个问题与此相关:,但略有不同,我不明白为什么Javascript 使用setTimeout的jQuery递归ajax轮询,javascript,jquery,ajax,ajax-polling,Javascript,Jquery,Ajax,Ajax Polling,这个问题与此相关:,但略有不同,我不明白为什么 function _poll(n) { $.ajax({ url: "/check_status", type: "POST", data: {state: 0}, success: function(xhr) { var data = $.parseJSON(xhr) if (data.status == 0) { poll(n) } }
function _poll(n) {
$.ajax({
url: "/check_status",
type: "POST",
data: {state: 0},
success: function(xhr) {
var data = $.parseJSON(xhr)
if (data.status == 0) {
poll(n)
}
}
});
}
function poll(n) {
setTimeout(_poll(n), 5000);
}
像另一个问题一样,请求也被疯狂地发送出去。
非常感谢你的帮助
请注意,我必须使用不同的名称“poll”和“u poll”用于其他目的。我相信您的问题在于这一行:
setTimeout(_poll(n), 5000);
调用函数并传递其返回值时,必须将其作为参数传递。例如,思考此代码将如何执行:
setTimeout(Math.Sum(2, 7), 5000);
它将返回9作为第一个变量,而不是函数本身
解决此问题的最简单方法是改用此格式,它定义了一个匿名函数:
setTimeout(function(){ _poll(n) }, 5000);