【发布时间】:2015-02-05 19:45:30
【问题描述】:
有没有办法将一个承诺的返回值沿链传递给下一个而不是下一个?目前,我们通常嵌套 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
});
是否有可能以某种方式将订单对象传递到承诺链中以获得类似于:
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
});
【问题讨论】:
-
只需在
getOrderLines()中返回order(或orderLines)(而不是你现在正在做的承诺?)并将其作为参数传递给关注.then()。跨度> -
@zvona 这意味着我需要预测其他调用者可能需要从该函数中获得什么 - 我通常不会从名为 getOrderLines 的函数中返回订单。
-
@AnilSingh 不幸的是,这些答案并没有解决在前一个之前保持对承诺结果的访问权的问题(在我的示例中为 order)。
标签: javascript angularjs promise angular-promise