使用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指令永远不会执行,因为我们已经退出了该函数。
答案 0 :(得分:0)
如果func1
未定义,也许myfunc()
不返回任何内容?您是否不应该将myfunc
作为函数名称而不是函数调用来传递,例如$.when(myfunc, $.ajax())
...?