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

4

0 に答える 0