一尘不染

何时在Node.js中使用next()并返回next()

node.js

场景 :考虑以下是节点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()以及一些重要的区别吗?


阅读 279

收藏
2020-07-07

共1个答案

一尘不染

有人总是写return next()是为了确保执行在触发回调后停止。

如果您不这样做,则可能要冒第二次触发回调的风险,这通常会造成灾难性的后果。您的代码可以正常使用,但我会将其重写为:

app.get('/users/:id?', function(req, res, next){
    var id = req.params.id;

    if(!id)
        return next();

    // do something
});

它为我节省了缩进级别,当我稍后再次阅读代码时,我确定没有办法next被调用两次。

2020-07-07