场景 :考虑以下是来自节点 Web 应用程序的代码部分。
app.get('/users/:id?', function(req, res, next){ var id = req.params.id; if (id) { // do something } else { next(); //or return next(); } });
问题 :我正在检查与哪个一起使用next()或return next()。上面的示例代码对两者的工作方式完全相同,并且在执行方面没有任何差异。
next()
return next()
问题 :有人可以说明这一点,何时使用next(),何时使用return next()以及一些重要的区别?
有些人总是写return next()是为了确保触发回调后执行停止。
如果您不这样做,您可能会在以后再次触发回调,这通常会产生毁灭性的后果。您的代码照原样很好,但我会将其重写为:
app.get('/users/:id?', function(req, res, next){ var id = req.params.id; if(!id) return next(); // do something });
它为我节省了一个缩进级别,当我稍后再次阅读代码时,我确信没有办法next被调用两次。
next