递归ajax()请求

我使用jQuery的ajax()来获取信息。 我在请求成功时调用该方法。 这是代码:

 function recursively_ajax(){ console.warn("begin"); $.ajax({ type:"GET", url: "./JvmInfoClass", success: function(data){ console.warn("get jvm info success"); recursively_ajax(); } }); } recursively_ajax(); 

我让线程在后端睡3秒。 但控制台不会在3秒后连续打印消息。 为什么是这样?

您可以使用ajax调用async:false来尝试此操作

 var counter=0; function recursively_ajax() { var pass_data=5; var chartMenu=['VTR','NC','RC','TOCU','TOCO','TR','COA','MP']; $.ajax({ type:"POST", async:false, // set async false to wait for previous response url: "url to server", dataType:"json", data:{dataMenu:pass_data}, success: function(data) { counter++; if(counter < chartMenu.length){ recursively_ajax(); } } }); } recursively_ajax(); 

在这种情况下,错误在服务器端代码中,因为服务器应该仅在3秒后发回响应。

但我建议在客户端使用setTimeout()来限制请求频率

尝试

 function recursively_ajax(){ console.warn("begin"); $.ajax({ type:"GET", url: "./JvmInfoClass", success: function(data){ console.warn("get jvm info success"); setTimeout(recursively_ajax, 3000) } }); } recursively_ajax(); 

这是浏览器的缓存问题,我将日期附加到url或设置ajax缓存:false,问题解决了。谢谢大家。