【发布时间】:2019-05-05 15:48:02
【问题描述】:
使用 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,...
在第一种情况下,解析器将指令解释为两条指令:返回 undefined 然后返回 $.ajax。 $.ajax 指令永远不会执行,因为我们已经退出了函数。
【问题讨论】: