2

我尝试使用$.whenajax 调用,其中的调用并不总是被调用,我该如何实现这一点。我一直在尝试破解它

var renderThis;
$.when($.post("/blabla", function(data){
            renderThis = data;
        }),
        function(){
            if(another){
                return $.post("/blabla");
            }
            else{
                return true;
            }
        })
        .then(function(){
            render(renderThis)
        });

但我看到的是,$.then()不是以延迟方式调用,而是立即调用。

有任何想法吗?

4

2 回答 2

5

.when需要函数结果而不是函数引用。您的第二个参数.when是函数引用。尝试使用立即执行的函数:

$.when(
    $.post("/blabla"),
    (function() {
        if(another){
            return $.post("/blabla");
        }
        else{
            return true;
        }
    })())
.then(
    function(data1, data2){
        render(data1);
    });

如您所见,我还整合了第一个success要处理的函数,而不是通过调用when内联提供它。.post

于 2013-11-05T11:23:11.793 回答
2

尝试

var requests = [$.post("/blabla")];
if (another) {
    requests.push($.post("/blabla"))
}
$.when.apply($, requests).then(function (data1) {
    render(data1[0])
});
于 2013-11-05T11:17:36.630 回答