处理多个并行ajax请求的响应

时间:2012-05-18 08:57:36

标签: javascript jquery

我对我的服务(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);
}

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

0 个答案:

没有答案