推荐答案
在 Express 中,next 函数用于将控制权传递给下一个中间件或路由处理程序。它可以用于跳过当前中间件、传递错误、或继续执行后续的中间件。
本题详细解读
1. 基本作用
next 是 Express 中间件函数中的一个参数,通常作为第三个参数传递。它的主要作用是将控制权传递给下一个中间件或路由处理程序。如果没有调用 next(),请求将被挂起,不会继续执行后续的中间件或路由处理程序。
2. 使用场景
- 跳过当前中间件:在某些条件下,你可能希望跳过当前中间件的执行,直接调用
next()进入下一个中间件。 - 传递错误:你可以通过
next(error)将错误传递给错误处理中间件。Express 会跳过所有非错误处理中间件,直接调用错误处理中间件。 - 继续执行后续中间件:在完成当前中间件的处理后,调用
next()可以继续执行后续的中间件或路由处理程序。
3. 示例代码
// www.javascriptcn.com code example
app.use((req, res, next) => {
if (req.headers['x-auth']) {
// 如果存在 x-auth 头,继续执行下一个中间件
next();
} else {
// 否则,返回 401 未授权
res.status(401).send('Unauthorized');
}
});
app.use((err, req, res, next) => {
// 错误处理中间件
console.error(err.stack);
res.status(500).send('Something broke!');
});4. 注意事项
- 如果不调用
next(),请求将被挂起,客户端将不会收到响应。 - 如果调用
next(error),Express 会跳过所有非错误处理中间件,直接调用错误处理中间件。 next()只能在中间件或路由处理程序中使用,不能在普通的回调函数中使用。