如何返回嵌套的承诺?

时间:2014-05-17 00:58:44

标签: javascript jquery nested promise deferred

我有一个javascript函数,如下所示:

function foo() {

    var returnPromise;

    $.when(asyncMethod1(), asyncMethod2()).then(
        function() {
            //… process results from method1 and 2
            returnPromise = $.when(asyncMethod3(), asyncMethod4()).then(
                function() {
                    finalMethod();
                }
            );
        });
    return returnPromise;
}

上面的代码不起作用,因为foo()将在returnPromise被分配之前退出。 asyncMethod3和4只能在asyncMethod1和2完成后执行。关于如何构建我的javascript函数的任何建议?

1 个答案:

答案 0 :(得分:3)

您可以链接then次来电。

function foo() {
    return $.when(asyncMethod1(), asyncMethod2()).then(function(resultOf1, resultOf2) {
        return $.when(asyncMethod3(), asyncMethod4());
    });
}

foo().then(function finalMethod(resultOf3, resultOf4) {});

注意:您不必命名函数表达式,为清楚起见,我这样做了。