快速错误处理和进程继续


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((。

它不会记录After会话管理器,但如果我把它移到错误处理程序下面,它就会正常工作。

回到这个问题,我希望有一个错误处理程序来处理这个错误,并恢复到我抛出错误之前运行的状态。我知道CCD_ 1将导致功能中断。我更感兴趣的是在队列中运行下一个中间件

如何返回到执行中间件列表中的下一个函数?

我有一个简单的想法,你可以通过创建多个并行执行的promise来实现这一点,并执行一个promise。all((,它将同时promise所有的promise,其中这些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);

最新更新