$.when выдает другой результат, когда $.ajax встроен, а $.ajax возвращается функцией
Используя 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
часть 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 в функцию.
РЕДАКТИРОВАНИЕ
Проблема решена. я написал
return
$.ajax({
url: url1,...
вместо
return $.ajax({
url: url1,...
В первом случае синтаксический анализатор интерпретирует инструкцию как две инструкции: return undefined затем $.ajax. Инструкция $.ajax никогда не выполняется, потому что мы уже вышли из функции.
1 ответ
Если func1
возможно не определено myfunc()
ничего не возвращает? Если не пройти myfunc
как имя функции вместо вызова функции, например $.when(myfunc, $.ajax())
...?