我对javascript和nodejs一无所知,有时无法理解回调函数。我发现最让人困惑的是找到什么参数(或者应该叫参数吗?)传递到回调函数中。
请考虑以下示例
app.get('/', function (req, res) {
res.send('GET request to homepage');
});
如果我理解正确的话,我可以将函数中的参数名称更改为其他的东西(例如,a,b而不是req,res),并且它仍然将分别包含request和response对象。
app.get('/', function (a, b) {
b.send('GET request to homepage');
});
这是因为app.get方法/函数将它的第二个参数定义为一个回调函数,而什么参数将作为参数传递给该回调函数,对吗?
如果上面是真的,我只是在Express API文档中找不到描述该方法/函数的回调函数参数传递内容的文档。事实上,我几乎找不到文档来描述对于许多其他方法/函数传递到回调中的内容。我在哪里可以找到这些信息?我看错了信息是因为我弄错了一些术语吗?
对于那些正在访问这个三年前的老问题并希望得到答案的人(就像我一样),我希望下面的答案能启发你的心情;)
编写错误处理程序
以与其他中间件函数相同的方式定义错误处理中间件函数,只是错误处理函数有四个参数,而不是三个:(err,req,res,next)。例如:
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!')
})