0

这个问题与此有关: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”。

4

1 回答 1

1

我相信你的问题出在这条线上:

setTimeout(_poll(n), 5000);

您正在调用该函数并传递其返回值,您必须将其作为参数传递。例如,考虑一下这段代码将如何执行:

setTimeout(Math.Sum(2, 7), 5000);

它会返回 9 作为第一个变量,而不是函数本身。

解决这个问题的最简单方法是改用这种格式,它定义了一个匿名函数:

setTimeout(function(){ _poll(n) }, 5000);
于 2014-09-05T21:49:56.247 回答