Использование jquery 1.12 Мне нужно подождать результатов двух вызовов AJAX, прежде чем идти дальше.Когда я использовал $.when
, я не понимаю, почему я не получаю те же результаты, когда я передаю $.ajax
напрямую и когда я возвращаю $.ajax
из вызова функции.
Это работает.В done
часть func1
представляет собой массив с func1[0]
возвращаемыми данными:
$.when($.ajax({
url: url1,
type: 'GET',
dataType: 'json',
xhrFields: {
withCredentials: true
},
headers: {
Accept: "application/json; charset=utf-8"
},
success: function (data){
debugger;
}
}), $.ajax(...)
).done(function(func1, func2) {
debugger;
})
Это не так.В done
part func1
есть undefined
:
var myfunc = function() {
return $.ajax({
url: url1,
type: 'GET',
dataType: 'json',
xhrFields: {
withCredentials: true
},
headers: {
Accept: "application/json; charset=utf-8"
},
success: function (data) {
debugger;
}
});
}
$.when(myfunc(), $.ajax(...)).done(function(func1, func2) {
debugger;
})
Во втором случае я просто обернул первый ajax-вызов в функцию.
EDITED
Проблема решена.Я написал
return
$.ajax({
url: url1,...
вместо
return $.ajax({
url: url1,...
В первом случае парсер интерпретирует инструкцию как две инструкции: return undefined затем $ .ajax.Инструкция $ .ajax никогда не выполняется, потому что мы уже вышли из функции.