1

我正在尝试对服务器进行 jsonp 调用,代码如下所示:

功能我的回调(数据){
  变种自我=这个;
  var currentId = data.ID;
  if(currentId == self.latestId){
    console.log("最新请求响应,做点什么");
    self.latestId = new Date().getTime();
  } 别的 {
    console.log("旧请求已响应,所以我们不在乎");
  }
};

函数 makeCall() {
  变种自我=这个;
  self.latestId = new Date().getTime();
  var url = serverUrl + "&ID="+ self.latestId;
  $.ajax(网址,{
   数据类型:“jsonp”,
   超时:10000,
   缓存:真,
   jsonp:"回调",
   jsonpCallback:“我的回调”,
   错误:函数(id){
     返回函数(){
         如果(id == self.latestId){
           console.log("latest request errored out");//可能是由于超时
           self.latestId = new Date().getTime(); // 更新 latestid 所以 mycallback 忽略这个请求
         }
         别的 {
           console.log("旧请求出错,所以我们不再关心");
         }
     }
   }(self.latestId)
  });
};

来自服务器的响应类似于 myCallback({some_data...});

当只有一个请求被触发时,它按预期工作,但是当我用相同的数据触发 4-5 个请求时,ID 控制既不会转到 myCallback 也不会出错,而服务器及时成功响应。这不会始终如一地发生,因此看起来像是一个同步问题。在进行多个查询时使用命名回调是否会出现任何同步问题。如果有多个查询,只有最后一个应该获胜,但看起来不像在这里工作。由于每个请求的回调名称相同,这可能是一个问题吗?

我对这里发生的事情一无所知,有人遇到过这样的事情吗?

编辑:看起来这与提到的并行请求的回调名称有关jQuery 中的并行 JSONP 请求不会触发多个“回调事件”?

4

0 回答 0