【发布时间】:2016-09-21 22:41:27
【问题描述】:
我正在使用 nodejs 和 sequelize 框架,但我在尝试检索一些数据时遇到问题
getAllMedicamentsWithTotal: function () {
return medicamentService.getAll().then(function success(medicaments) {
for(var i = 0 ; i < medicaments.length; i++){
getTotalMedicament(medicaments[i]).then(function (total) {
medicaments[i].dataValues.total = total;
})
}
}, function fail() {
})
}
我有这个功能,它可以获取所有药物及其库存总量。但是外部承诺在回调执行之前结束。我知道循环 promise 会出错,但有没有比修复这段代码更好的方法?
为了提供更多上下文,我有一个表库存,它具有表药物的外键,并且在库存表中有药物的数量。我想得到类似 [{name1, sum(stockQuantity1)}, {name2, sum(stockQuantity2)}, ...] 但我无法做到。
如果有任何帮助,我将不胜感激
【问题讨论】:
-
使用
Promise.all而不是for循环 bluebirdjs.com/docs/api/promise.all.html -
所以在外部承诺里面我会放一些类似
return Promise.all(...)?的东西。我不确定在发送响应之前会执行回调函数
标签: javascript node.js promise sequelize.js