javascript - 扁平化 AngularJS 中的嵌套 Promise

标签 javascript angularjs promise angular-promise

是否有一种方法可以将一个 Promise 的返回值沿着链传递给下一个 Promise,而不是传递给下一个 Promise?目前,我们通常嵌套 promise 将值保留在函数范围内,如下所示:


return getOrder()
    .then(function (order) {
        return getOrderlines(order)
            .then(function (orderLines) {               
                //do something with order and orderlines
                processOrderAndOrderlines(order, orderLines);
            });
    })
    .then(function () { //do something else
    });

是否有可能以某种方式将订单对象传递到 promise 链中以获得类似于以下内容的内容:

return getOrder()
    .then(function (order) {
        return getOrderlines(order);            
    })
    .then(function (orderLines) {               
        //do something with order and orderlines
        processOrderAndOrderlines(order, orderLines);
    });
    .then(function () { //do something else
    });

最佳答案

您可以在外部范围定义一个变量并将其设置在 Promise 内部:

var order, orderLines;

return getOrder()
    .then(function (result) {
        order = result;
        return getOrderlines(order);            
    })
    .then(function (result) {               
        //do something with order and orderlines
        orderLines = result;
        processOrderAndOrderlines(order, orderLines);
    });
    .then(function (result) { //do something else

    });

关于javascript - 扁平化 AngularJS 中的嵌套 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28342608/

相关文章:

javascript - 上传文件不起作用

javascript - 如何使用angularjs动态设置css样式?

javascript - 在另一个 promise 的 then-block 中返回和不返回一个 promise 有什么区别?

javascript - 无法使用 jQuery (IE 8) 访问文档的标题元素

javascript - AngularJS 将子状态参数插入 $urlRouterProvider (UI-Router)

javascript - 在变量内部调用函数

jquery - 为什么我会因为 jQuery 而出现 'failed to initiate app' 错误?

javascript - React Native - 异步存储、等待和同步

c++ - std::promise 和 std::future 的非明显生命周期问题

javascript - 如何在 jQuery.get() 中有一个进度条