我对我的服务(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秒以上。