【发布时间】:2016-06-01 19:01:52
【问题描述】:
我有一个场景,我需要在下面的系列中进行多次调用。 我正在更新“loadBaseData”函数返回的主数据对象,然后需要再次调用“grindCoffee”函数对同一数据对象进行额外修改。
但是数据没有抵抗,到了processResponse的时候,所有的选项都是空的。
app.post('/makecoffee', loadBaseData, grindCoffee, addWater, brewCoffee, processResponse);
function loadBaseData (req, res, next) {
pgServer.dbSelectData(req.body.username)
.then(function(data) {
req.data = data;
next();
})
.catch(function(err) {
res.send({success:false,message:'error, '+ err});
});
}
function grindCoffee (req,res,next){
var records = req.data;
for (j = 0; j< records.length; j++) {
if (Condition A){
dsServer.grindCoffee(function(res){
if (Condition B){
req.data[i].options = res;
next();
}
});
}
}
next();
}
// addWater and brewCoffee are similar to grindCoffee, it keeps updating the req.data
function processResponse(req,res){
res.send({success:true,data:req.data});
}
编辑: 我认为也许使用像 bluebird 这样的 promise 可能有助于解决这种情况,但我不确定如何将其转换为它。
【问题讨论】:
-
不要在循环中调用
next()?
标签: node.js express promise bluebird