2

我对我的服务 (jsonp) 有 4 个并行 jQuery ajax 请求,并且一切正常,直到数据从服务返回并需要显示给用户。我无法处理响应,因为它们都以几毫秒的间隔到达,并且它们调用相同的 jsonp 回调方法。

我想要做的是在每个 ajax 请求完成其工作时更新数据框。

代码示例:

$.ajax({
   url: 'http://link/service?source=1',
   dataType: 'jsonp',
   jsonp: 'callback',
   jsonpCallback: 'asyncPrint'
   complete: function(data) {
      console.log("completed");
   }
});

$.ajax({
   url: 'http://link/service?source=2',
   dataType: 'jsonp',
   jsonp: 'callback',
   jsonpCallback: 'asyncPrint'
   complete: function(data) {
      console.log("completed");
   }
});

$.ajax({
   url: 'http://link/service?source=3',
   dataType: 'jsonp',
   jsonp: 'callback',
   jsonpCallback: 'asyncPrint'
   complete: function(data) {
      console.log("completed");
   }
});

$.ajax({
   url: 'http://link/service?source=4',
   dataType: 'jsonp',
   jsonp: 'callback',
   jsonpCallback: 'asyncPrint'
   complete: function(data) {
      console.log("completed");
   }
});

在其他文件中,我实现了 asyncPrint 方法:

function asyncPrint(data) {
   if(data == undefined) return;

   //Populate sourceMedia with data from all sources
   sourceMedia[data.list[0].source] = data;

   //Do something with arrived data
   goThroughArrivedData(data);
}

PS 我尝试过使用 $.when(),但它等待所有 ajax 请求完成,这是不可接受的,因为其中一个 ajax 调用可能需要 30 秒以上。

4

0 回答 0