在end()函数外部或内部调用next()有什么区别?我也需要将其调用到 onError() 中吗?
PS:我需要下一个处理程序中的数据。
return function (req, res, next){
req.setEncoding('utf8');
req.rawBody = '';
req.on('data', function (chunk) {
req.rawBody += chunk;
});
req.on('aborted', onAborted);
function onAborted() {
logger.warn('Request has been aborted [IP= ' + req.ip + '].');
}
req.on('error', onError);
function onError() {
logger.warn('Unable to read request [IP= ' + req.ip + '].');
// next() ?
}
req.on('end', onEnd);
function onEnd() {
next()
}
// next() ?
};
不同之处在于,在 onEnd
内部,只有在发出 end
事件时,它才会异步执行。在onEnd
之外,在最后一行,它不会等待end
事件,一旦代码到达该行就会执行。
在开发express
应用程序时,当错误发生时,将错误传递给next()
函数,并使用主文件中的中间件(如errorHandler
)进行处理是一个很好的做法。