我对 javascript 和 Nodejs 很菜鸟,有时无法理解回调函数。我发现最令人困惑的是查找哪些参数(或者应该称为参数?)被传递到回调函数中。
考虑以下示例
app.get('/', function (req, res) {
res.send('GET request to homepage');
});
如果我理解正确,我可以将函数中的参数名称更改为其他名称(例如 a,b 而不是 req,res),并且它仍将分别包含请求和响应对象。
app.get('/', function (a, b) {
b.send('GET request to homepage');
});
这是因为 app.get 方法/函数将其第二个参数定义为回调函数,以及将作为参数传递到该回调函数中的内容,对吗?
如果上述情况属实,我只是在 Express API 文档中找不到描述该方法/函数的回调函数参数中传递的内容的文档。事实上,我几乎找不到描述许多其他方法/函数传递给回调的内容的文档。我在哪里可以找到这些信息?我是否因为弄乱了一些术语而看到了错误的信息?
最佳答案
对于那些访问这个 3 年前的问题并希望得到答案的人(就像我一样), 我希望下面的回答能够启发您的心情;)
- 平均回调(中间件函数)有三个参数(即 req、res、next)
- 错误回调有特殊的形式;它有四个参数。
Writing error handlers
Define error-handling middleware functions in the same way as other middleware functions, except error-handling functions have four arguments instead of three: (err, req, res, next). For example:
app.use(function (err, req, res, next) {
console.error(err.stack)
res.status(500).send('Something broke!')
})
如果您在 Express API 中使用 TypeScript,则需要显式键入所有参数,否则编译器将隐式将参数键入 Any 并在转译过程中崩溃。
app.use((err: Error, req: Request, res: Response, next: NextFunction) => {
console.error(err.stack)
res.status(500).send('Something broke!')
})
关于javascript - 哪些文档描述了传递给 Express app.METHOD 回调参数的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40902096/