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

我正在参加learnyounode研讨会,我对这个官方解决scheme的片段感到好奇。

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

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

这个函数的返回值实际上并不在任何地方,尽pipe在理论上它可以:

 http.createServer = function (cb) { if (cb()) { /* do something */ } }; 

据我所知, .createServer实际上没有任何理由在内部做这个。 在这种情况下,你想要使用return的原因是短路function执行,例如

 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可能会阻止继续执行该函数,但是出于这些原因之一,您可以在callback函数中使用return

将传递给http.createServer的函数作为请求事件的侦听器添加到EventEmitter实例中 。

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

因此,在这种情况下使用return语句的唯一好处是提前返回,并在爆炸丸所述的情况下忽略该函数的其余部分。