有没有办法将链中的一个承诺的返回值传递给下一个但不是下一个?目前,我们通常嵌套promises以将值保留在函数范围内,如下所示:
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
});
答案 0 :(得分:0)
您可以在外部范围定义变量并将其设置在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
});
答案 1 :(得分:0)
如果您需要在orderLines
中同时使用order
和初始processOrderAndOrderlines
对象,那么最简洁的方法是使用某种地图解析getOrderlines
承诺,其中包含{ {1}}也是对象。例如:
order
那么你就可以这样使用它:
function getOrderLines(order) {
// Some promise flow, e.g.:
return $http.post('getOrderLines', {order: order}).then(function(response) {
return {
order: order,
orderLines: response.data
}
});
}