1. ホーム
  2. node.js

[解決済み] Node.jsでnext()とreturn next()を使用する場合

2022-04-23 10:39:26

質問

シナリオ : 以下は、あるノード・ウェブ・アプリのコードの一部であるとします。

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() と重要な違いがあるのでしょうか?

どのように解決するのですか?

ある人はいつも return next() は、コールバックをトリガーした後に実行が停止することを保証するためのものです。

これをしないと、後で2回目のコールバックが起動する危険があり、通常、壊滅的な結果になります。あなたのコードはそのままでも良いのですが、私なら次のように書き直します。

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

    if(!id)
        return next();

    // do something
});

インデントレベルも節約できるし、後でコードを読み直したときに、まさかの next が2回呼び出されます。