$.when 当 $.ajax 是内联与 $.ajax 由函数返回时产生不同的结果
$.when produces different result when $.ajax are inline vs $.ajax are returned by a function
使用 jquery 1.12 我需要等待两次 AJAX 调用的结果,然后再继续。当我使用 $.when
时,我不明白为什么当我直接传递 $.ajax
和当我从函数调用 return 传递 $.ajax
时我没有得到相同的结果.
这行得通。在 done
部分 func1
是一个数组, func1[0]
是数据 returned:
$.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 指令永远不会执行,因为我们已经退出了函数。
如果 func1
未定义,也许 myfunc()
没有返回任何内容?您不应该将 myfunc
作为函数名称而不是函数调用传递,例如$.when(myfunc, $.ajax())
...?
使用 jquery 1.12 我需要等待两次 AJAX 调用的结果,然后再继续。当我使用 $.when
时,我不明白为什么当我直接传递 $.ajax
和当我从函数调用 return 传递 $.ajax
时我没有得到相同的结果.
这行得通。在 done
部分 func1
是一个数组, func1[0]
是数据 returned:
$.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 指令永远不会执行,因为我们已经退出了函数。
如果 func1
未定义,也许 myfunc()
没有返回任何内容?您不应该将 myfunc
作为函数名称而不是函数调用传递,例如$.when(myfunc, $.ajax())
...?