Я пытаюсь использовать jQuery.when
, чтобы запустить два запроса ajax
, а затем вызвать некоторую функцию после завершения двух запросов. Здесь мой код:
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, а затем использован в showData()
.
Но когда я запускаю вышеуказанный код, вызывается method1
, а затем method2
, а затем showData
оставляя данные в showData
как 'undefined'
. Как я могу достичь этого с помощью $.when
, который, насколько я знаю, выполняется только тогда, когда выполняются обе функции, возвращающие $.promise
. Я хочу, чтобы оба вызова ajax вызывались параллельно, а последующие результаты отображались на основе результатов обоих вызовов.