javascript - 如何返回嵌套的 promise ?

标签 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 函数的任何建议?

最佳答案

您可以链接 then 调用。

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

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

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

关于javascript - 如何返回嵌套的 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23706579/

相关文章:

javascript - 使用javascript更改/剥离图像指向的url

javascript - jQuery .html() 方法函数文字参数

javascript - 切换按钮 - 单击其中一个即可切换所有切换

sql - 我可以在存储过程中动态创建的临时表 (#temp) 上创建索引吗?

javascript - 是否可以防止使用 XHR 加载页面?

javascript - 将变量值从一个函数传递到另一个函数

javascript - jQuery 没有获取密码字段值

嵌套的 `defun` 在 Allegro Common Lisp 中产生重复警告

java - 嵌套 JPanel 调整大小问题

Javascript:将带有通配符的路径保存到变量中