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