jQuery递归获取等待结果

jQuery Recursive get wait for result

本文关键字:结果 等待 获取 递归 jQuery      更新时间:2023-09-26

我正在尝试使用jQuery编写一个递归函数来调用一个发送电子邮件的php文件。电子邮件服务器一次发送10封电子邮件,我希望JS继续发出GET直到数据。已完成==true。

我的代码如下:

function emailDespatchNotification() {
  $.get('email.php', function(event) {
    if (event.action.status == 'OK') {
      if (event.data.Finished != true) {
        emailDespatchNotification();
      }
    }
  });
}

JSON结果如下:

{
"log": {"SQL":{"0":"SELECT ...","1":"INSERT INTO ..."},"0":"Cache cleared","Page":"email.php","Script_Time":3.4495},
"data": {"Finished":false},
"action": {"status":"OK"},
"readable": {}
}

当第一次调用emailDespatchNotification()时,代码的行为就像我希望它向服务器发送一个GET一样,但当返回结果(包含数据。Finished=false)时,JS会不断向服务器发送GET请求,直到我停止它或浏览器报告错误。

我不明白为什么emailDespatchNotification()被连续调用,因为只有在GET返回值后才应该调用它。我尝试将整个GET嵌套到一个命名函数中,并调用它而不是emailDespatchNotification(),但没有效果。在使用列表之前,我已经解决了这种问题,但我不知道需要调用服务器多少次,所以列表不合适。我使用的是jQuery 1.8.3,并使用Firebug进行调试。

我相信我已经通过在GET函数中添加种子来解决了这个问题,尽管Cache Control设置为无存储,无缓存,但它正在缓存结果。

调整后的代码如下:

var seed = new Date() / 1;
$.get('beta/email.php', {seed:seed}, function(event) {

通过这种方式,我确保获得页面的实时版本,并且我的代码执行良好。

@Jason p谢谢你的帮助!