Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用setTimeout的jQuery递归ajax轮询_Javascript_Jquery_Ajax_Ajax Polling - Fatal编程技术网

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);