这个问题与此有关:jQuery recursive ajax poll using setTimeout to control the poll interval,但略有不同,我无法弄清楚原因。
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”和“_poll”用于其他目的。
答案 0 :(得分:1)
我相信你的问题就在这一行:
setTimeout(_poll(n), 5000);
您正在调用该函数并传递其返回值,您必须将其作为参数传递。例如。想一想这段代码的执行方式:
setTimeout(Math.Sum(2, 7), 5000);
它将返回9作为第一个变量,而不是函数本身。
解决此问题的最简单方法是使用此格式,它定义了一个匿名函数:
setTimeout(function(){ _poll(n) }, 5000);