を使用しjQuery.when
て2つのajax
リクエストを起動し、2つのリクエストが完了した後に関数を呼び出そうとしています。これが私のコードです:
var count = 0;
var dfr;
var showData = function(data) {
dfr.resolve();
alert(count);
// Do something with my data data received
};
var method1 = function() {
dfr = $.Deferred();
return $.ajax('localhost/MyDataService/DataMethod_ReturnsData', {
dataType: "jsonp",
jsonp: "$callback",
success: showData
});
};
var method2 = function() {
return $.ajax('localhost/MyDataService/DataMethod_ReturnsCount', {
dataType: "jsonp",
jsonp: "$callback",
success: function(data) {
count = data.d.__count;
}
});
};
$.when(method1(), method2())
.then(showData());
ただし、これは期待どおりに機能していません。Ajax呼び出しmethod1
は、で使用されるデータを返しshowData()
、Ajax呼び出しは、method2
var countに割り当てられ、後でで使用されるcountを返しますshowData()
。
しかし、上記のコードを実行method1
すると、呼び出されてから、データmethod2
をとしてshowData
残します。どうすればこれを達成できますか?私が知る限り、返される両方の関数が実行された場合にのみ進行します。両方のajax呼び出しを並行して呼び出し、両方の呼び出しの結果に基づいて後の結果を表示する必要があります。showData
'undefined'
$.when
$.promise