jQuery使用setTimeout进行递归ajax轮询
jQuery recursive ajax poll using setTimeout
这个问题与此相关: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"answers"_poll"。
我相信你的问题就在这一行:
setTimeout(_poll(n), 5000);
在调用函数并传递其返回值时,必须将其作为参数传入。例如,想想这个代码将如何执行:
setTimeout(Math.Sum(2, 7), 5000);
它将返回9作为第一个变量,而不是函数本身。
解决这个问题的最简单方法是使用这种格式,它定义了一个匿名函数:
setTimeout(function(){ _poll(n) }, 5000);
相关文章:
- jQuery setTimeout ajax递归函数在即时消息程序中短时间后抛出错误
- Javascript异步AJAX和递归排序
- 通过递归循环同步ajax请求
- 如何调试/解决递归 AJAX 追加重复项
- 递归和传递 Ajax 回调
- 使用递归函数按顺序执行多个 ajax 请求,并在所有请求完成后执行回调函数
- 成功后的递归Ajax
- 递归ajax()请求
- 如何"递归AJAX回调”;在JavaScript工作中
- 如何使用promise返回从递归AJAX调用构建的集合
- jstree,json,ajax:递归搜索和选择
- jQuery使用setTimeout进行递归ajax轮询
- 实现递归ajax调用,并在一个条件下停止它
- Ajax递归函数工作奇怪
- 如何递归地调用ajax,直到某个条件变为真
- 使Ajax请求递归-检查文件是否存在
- Javascript:递归AJAX回调和最大嵌套级别
- 如何在ajax请求完成后1秒递归地调用函数
- 在Internet Explorer中使用AJAX递归调用服务器
- jQuery递归AJAX调用承诺