jQuery.when понимаю

Я пытаюсь использовать 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 вызывались параллельно, а последующие результаты отображались на основе результатов обоих вызовов.

57
задан taras 8 August 2017 в 10:12
поделиться