我有三个方法(每个都是promise)可以从数据库中进行选择。
getDeliverDate()
.then(calculateOrderList)
.then(getOrderItemsForOrder)对于每个deliverDate,我需要获取相应的订单列表,对于每个订单,我需要获取项目列表。然后,我将构建一个发送给客户端的JSONview。并且必须从每个方法推送到对象数据。我真的不确定这种方法是否会奏效。谁能告诉我如何让它工作使用上面的代码作为一个例子。
发布于 2016-11-29 21:34:00
将所有承诺放入一个数组中,然后使用Promise.all等待所有承诺完成并返回结果。就像这样
var promises = []
for (...) {
promises.push(getDeliverDate()
.then(calculateOrderList)
.then(getOrderItemsForOrder));
}
return Promise.all(promises);all不是when --让我的promise库混淆了发布于 2016-11-29 21:34:14
更好的方法是使用Promise.all
Promise.all([getDeliverDate, calculateOrderList, getOrderItemsForOrder])
.then(values => {
console.log(values);
});发布于 2016-11-29 21:51:47
如果我理解的是正确的(如注释中所给出的):
getDeliverDate()
// get array of delivery dates
.then((deliveryDates = []) => {
// for each delivery date, I need to get corresponding list of orders
const promises = deliveryDates.map(date => calculateOrderList(date));
return Promise.all(promises);
})
// get order list as an array
.then((orderList = []) => {
// for each order I need to get list of items corresponding to that order
const promises = orderList.map(order => getOrderItemsForOrder(order));
return Promise.all(promises);
})
// get item list as an array
.then((items) => console.log('got everything : ', items))
.catch((error) => console.log('error : ', error))看起来你需要大量的API调用。也许我们应该考虑优化后端。
https://stackoverflow.com/questions/40867181
复制相似问题