场景 :考虑以下是节点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