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