jquery $。当$ .then问题

时间:2013-11-05 11:11:04

标签: jquery jquery-deferred

我尝试将$.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()没有以延迟方式调用,而是立即调用。

任何想法?

2 个答案:

答案 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])
});