我尝试将$.when
与ajax调用一起使用,其中调用on并不总是被调用,我该如何实现。我一直试图破解它
var renderThis;
$.when($.post("/blabla", function(data){
renderThis = data;
}),
function(){
if(another){
return $.post("/blabla");
}
else{
return true;
}
})
.then(function(){
render(renderThis)
});
但我看到$.then()
没有以延迟方式调用,而是立即调用。
任何想法?
答案 0 :(得分:5)
.when
需要函数结果而不是函数引用。您.when
的第二个参数是函数引用。请尝试使用立即执行的函数:
$.when(
$.post("/blabla"),
(function() {
if(another){
return $.post("/blabla");
}
else{
return true;
}
})())
.then(
function(data1, data2){
render(data1);
});
正如您所看到的那样,我还整合了success
首先处理when
功能,而不是.post
调用。
答案 1 :(得分:2)
尝试
var requests = [$.post("/blabla")];
if (another) {
requests.push($.post("/blabla"))
}
$.when.apply($, requests).then(function (data1) {
render(data1[0])
});