我正在进行的学习工作坊,我对其中一个官方解决方案的片段感到好奇。
var server = http.createServer(function (req, res) {
if (req.method != 'POST')
return res.end('send me a POST\n')
})
我只是好奇为什么他们根本不打算返回一个值。你可以调用res.end(),它会按预期工作(正如我预期的那样)。看起来end()只是返回一个布尔值,但我不明白为什么你需要或想要返回任何东西。
答案 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)
...
...
。