在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() ?
};
答案 0 :(得分:1)
区别在于onEnd
内部只有在发出end
事件时才会异步执行。在onEnd
之外的最后一行,它不会等待end
事件,并且会在代码到达该行时立即执行。
在开发express
应用时,将错误(当它发生时)传递给next()
函数并使用中间件(如errorHandler
)处理它是一个很好的实践。主文件。