サービス (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 呼び出しの 1 つに 30 秒以上かかる可能性があるため、これは受け入れられません。