将多个Bluebird承诺组合到一个承诺对象中
Combining multiple Bluebird promises into a single promise object
我正在使用BluebirdJS promise库。
我有一个名为getOrder的方法,它以promise的形式返回基于PO编号的订单详细信息。
var poNumber = '12345';
return getOrder(poNumber).then(function (order) {
console.log(order.poNumber, order.items[0].sku);
return order;
});
然而,我现在需要在循环中调用这个方法,并将有关订单的详细信息组合到一个对象中。
我的ATM是这样的:
var poNumbers = ['12345', '67890'];
return Promise.each(poNumbers, function (poNumber) {
return Promise.try(function () {
return getOrder(poNumber).then(function (order) {
console.log(order.poNumber, order.items[0].sku);
return order;
});
});
}).then(function (combinedOrder) {
console.log(combinedOrder);
});
但我不确定如何将每个订单的细节组合成一个对象,并将该对象作为承诺返回?
该项目也使用lodash,我尝试使用_.difference来获取差异并组成一个组合订单对象,但我再次不确定如何使其工作。
实现上述目标的最佳方法是什么?
您需要Promise.all
而不是Promise.each
:
引用文件:
给定Iterable(数组是Iterable)或Iterable的承诺,它产生承诺(或承诺和价值的混合),迭代将Iterable中的所有值转换为数组并返回promise当数组中的所有项都已满足时,即已满足。这个promise的履行值是一个数组,其履行值位于原始阵列的相应位置。如果在数组拒绝,返回的promise将被拒绝原因
相关文章:
- 节点导出返回一个空对象
- Javascript,访问一个主要对象模块模式中的每个对象
- 替换另一个变量对象中的变量值
- 获取一个javascript对象attr's
- 代码挑战:创建一个跟踪对象实例总数的类Foo
- 使用来自不同异步函数的响应创建一个json对象
- Node.js-chai是一个item对象
- 想要使用Javascript将一个JSON对象拆分为多个JSON对象
- JSON:在另一个JSON对象中重用JSON对象
- 一个承诺换多个承诺-并发问题
- 如何查找流星集合中最后一个元素/对象的id
- 从分析类传递现有对象,否则创建一个新对象
- 是我的第三方JavaScript返回html还是只是一个空对象
- 为什么在JavaScript中可以从另一个日期对象中减去日期对象
- 如何上传一个XML对象并用Perl将其保存在服务器上
- $scope$观察数组中的一个特定对象——Angular JS控制器
- 将一个javascript对象推送到另一个javascript对象中
- Javascript:使用一个预先存在的对象值作为一个新对象的键
- I'我在页面加载时将整个$_SESSION变量放入一个json对象中.虽然这对我有效,但这是一个好的做法吗
- 将多个Bluebird承诺组合到一个承诺对象中