小编典典

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

all

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


阅读 44

收藏
2022-08-17

共1个答案

小编典典

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

如果您不这样做,您可能会在以后再次触发回调,这通常会产生毁灭性的后果。您的代码照原样很好,但我会将其重写为:

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

    if(!id)
        return next();

    // do something
});

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

2022-08-17