0
我有一个场景,我需要在下面的系列中进行多个调用。 我正在更新由'loadBaseData'函数返回的主数据对象,然后需要再次调用'grindCoffee'函数对同一数据对象进行额外的修改。expressJs操作相同的数据对象的多个回调
但是数据并没有抵制,在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});
}
编辑: 我想,也许使用像蓝鸟承诺可能与此情况有所帮助,但我不知道如何将其转换为它。
不叫循环中'下一个()'的呢? – Bergi