简体   繁体   中英

Nodejs difference between 'res.json(..)' and 'return res.json(..)'

I am learning Nodejs and I do not fully understand the returns. For example, next() in many cases is suggested to be returned in order to make sure execution stop after triggering it ( Reference ). However, for cases like simple response, is return needed, what is the difference and what is preferred:

res.json({ message: 'Invalid access token' });

vs.

return res.json({ message: 'Invalid access token' });

The return is used to stop execution. It is often used to do some form of early return based on a condition.

Forgetting the return often leads to the function continuing execution instead of returning. The examples are typical express middle-ware examples.

If the middle-ware function looks like this:

function doSomething(req, res, next){
    return res.json({ message: 'Invalid access token' });
}

The resultant behavior would be exactly the same as:

function doSomething(req, res, next){
    res.json({ message: 'Invalid access token' });
}

But very often this pattern is implemented:

function doSomething(req, res, next){
    if(token.isValid){
        return res.json({ message: 'Invalid access token' }); // return is very important here
    }
    next();
}

As you can see here when the return is ommited and the token is invlaid, the function will call the res.json() method but then continue on to the next() method which is not the intended behaviour.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM