我已经使用 Restify 有一段时间了。我遇到了一些缺少 next()
的代码我突然想到我不确定我是否完全理解为什么 next()
应该在 res.send()
之后调用.我明白为什么要在中间件情况下使用它,但对于正常路线,为什么需要它?例如:
server.get('/a/:something/',function(req,res,next) {
res.send('ok');
});
对
server.get('/b/:something/',function(req,res,next) {
res.send('ok');
return next();
});
如果 return next();
被排除在代码之外,它似乎不会导致错误,并且可以从我所看到的内容中工作。
最佳答案
restify API Guide有话要说:
You are responsible for calling next() in order to run the next handler in the chain.
他们所指的“链”是每条路由的处理程序链。通常,每个路由将由多个处理程序按特定顺序处理。链中的最后一个处理程序实际上不需要调用 next() ——但假设处理程序总是最后一个是不安全的。未能调用链中的所有处理程序可能会在处理请求时导致严重或细微的错误。
因此,作为良好的编程习惯,您的处理程序应该始终调用 next() [使用适当的参数]。
关于node.js - 在 restify 中不调用 next() 的后果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354850/