app.use(helmet());
app.use(cookie_parser());
app.use(session_manager());
//Error handling expirement
app.use(function(req, res, next){
console.log("After session manager!");
return next();
})
app.use(function(err, req, res, next){
console.log(err.message);
return next();
});
app.use(function(req, res, next){
res.write("Hi");
res.end();
});
所以这个问题,我设法弄清楚,只有当我在错误处理程序之后声明了某些内容时,错误处理程序才会调用next()。
它不会在会话管理器之后记录,但是如果我将其移到错误处理程序下面,它将很好地工作。
回到问题,我想要一个错误处理程序来处理该错误并返回运行它正在运行的内容,然后再抛出错误。我知道throw new Error
会导致功能中断。我对在队列中运行下一个中间件更感兴趣
如何回到执行中间件列表中的下一个功能?
答案 0 :(得分:0)
我有一个骨灰级的想法,您可以通过创建多个promise来做到这一点,这些promise可并行执行并执行一个promise.all(),它将同时使所有promisate,其中这些promise将拒绝返回错误,这将被非孤立的渔获赶上
var promise1 = Promise.resolve("after session manager");
var promise3 =Promise.resolve("Hi");
var promise2 = new Promise((resolve, reject)=> {
reject(err)
}).catch(err=>{
throw new Error(err);
};
var finalResolver=Promise.all([promise1, promise2, promise3]).then(function(values) {
console.log(values);
}).catch((err) =>{
console.log(err);
});
app.use(finalResolver);