为什么要在http.createServer()中返回一个值呢?

时间:2015-11-21 18:46:22

标签: javascript node.js

我正在进行的学习工作坊,我对其中一个官方解决方案的片段感到好奇。

var server = http.createServer(function (req, res) {
  if (req.method != 'POST')
    return res.end('send me a POST\n')
})

我只是好奇为什么他们根本不打算返回一个值。你可以调用res.end(),它会按预期工作(正如我预期的那样)。看起来end()只是返回一个布尔值,但我不明白为什么你需要或想要返回任何东西。

2 个答案:

答案 0 :(得分:3)

传递给http.createServer的函数将添加到EventEmitter实例as an listener for request event

传递给EventEmitter的侦听器返回的返回值将被忽略,proof

因此,在这种情况下使用return语句的唯一好处是早期返回并忽略函数的其余部分,如Explosion Pills所述。

答案 1 :(得分:2)

这个函数的返回值实际上并没有去任何地方,尽管理论上它可以:

.createServer

据我所知,return实际上并没有因为任何原因在内部执行此操作。在这种情况下,您希望使用var server = http.createServer(function (req, res) { if (req.method != 'POST') return res.end('send me a POST\n') res.end('POST sent\n'); }) 的原因是为了使函数执行短路,例如

if

当然,else / return可能会阻止继续执行该功能,但出于上述任何原因,您可以在回调函数中使用HttpClient hc =... ... //need a wait time(Thread.sleep(xxx)) here before executing hc.execute(post) ... //need a wait time(Thread.sleep(xxx)) here before executing hc.execute(get) ... ...