当从节点向角度发送响应时,返回的含义是什么

时间:2019-09-19 10:39:04

标签: node.js angular

假设以下示例:

第一名:

projectController.getProjectById = function(req,res){

            return (res.status(200).send("Hey"));

}

第二名:

projectController.getProjectById = function(req,res){

                res.status(200).send("Hey");

    }

仔细查看我的两个代码段,在第一个代码段中我写了return (res.status(200).send("Hey"));,在第二个代码段中我写了res.status(200).send("Hey");

我的问题是,如果我们不将return(...)写在res.send()中,那么它将也将数据发送到客户端。那么将res.send()包裹在return(...)中的含义是什么。

我已经在互联网上进行搜索,但仍对答案不满意,任何人都可以对我的问题进行解释。

2 个答案:

答案 0 :(得分:4)

return关键字从您的函数返回,从而结束其执行。这意味着之后的任何代码行都不会执行。

此外,一旦您使用了return关键字,代码执行者/编译器就无需关心下一行代码

For more info refer to this SO post

答案 1 :(得分:1)

要添加到jitender的答案上,因为return会终止执行,因此return res.send()可用于在有条件的响应条件下清理代码。

例如,假设您正在登录用户...

if (!user) {
  res.status(400).send('User not found')
} else if (user.disabled) {
  res.status(400).send('User is disabled')
} else {
  // ...check password...

  if (passwordMatch) {
    res.send('Here is your token...')
  } else {
    res.status(400).send('Password did not match')
  }
}

可以像这样清理...

if (!user) {
  return res.status(400).send('User not found')
}

if (user.disabled) {
  return res.status(400).send('User is disabled')
}

// ...check password...

if (passwordMatch) {
  return res.send('Here is your token')
}

res.status(400).send('Password did not match')

最后,是否要使用return或if-else块是一个样式选择。