有一些代码如下:
function middle(req,res,next){
//block A
next();
//block B
}
app.get('/',middle,function(req,res){
DB.query('....',callback(){
//block C
})
})
我运行了代码,执行的块顺序是A->B->C
,我期望的是A->C->B
。我认为DB存在异步调用。并且路由器返回middle
没等待数据库查询完成。我该如何解决这个问题呢?
有关于我的中间件的详细信息:
function _AliceSPA3HttpParserPayload(){
this.data = null;
this.errCode = 'UNHANDLED';
this.error = null;
this.api = function(errCode,error,data){
this.errCode = errCode;
this.error = error;
this.data = data;
}
this.apiSuccess = function(data){
this.api('E0',null,data)
}
this.apiSuc = this.apiSuccess;
}
module.exports = function(req,res,next){
var AP = new _AliceSPA3HttpParserPayload();
res.AP = AP;
next();
if(AP.errCode === 'UNHANDLED'){
return;
}
var error = res.app.get('error');
var err = error[AP.errCode];
if(!err){
err = error['E-1'];
err.code = AP.errCode;
err.error = AP.error;
}
err.data = AP.data;
res.json(err);
}
答案 0 :(得分:0)
它似乎可以在koa.js
中使用承诺中间件来解决。