这个问题与此相关:jQuery递归ajax轮询使用setTimeout来控制轮询间隔,但略有不同,我不知道为什么。
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"one_answers"_poll"。
我相信你的问题就在这一行:
setTimeout(_poll(n), 5000);
在调用函数并传递其返回值时,必须将其作为参数传入。例如,想想这个代码将如何执行:
setTimeout(Math.Sum(2, 7), 5000);
它将返回9作为第一个变量,而不是函数本身。
解决这个问题的最简单方法是使用这种格式,它定义了一个匿名函数:
setTimeout(function(){ _poll(n) }, 5000);