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