为什么要在http.createServer()中返回值呢
Why bother returning a value in http.createServer()
我正在参加learnyounode研讨会,我对其中一个官方解决方案中的这个片段很好奇。
var server = http.createServer(function (req, res) {
if (req.method != 'POST')
return res.end('send me a POST'n')
})
我只是好奇他们为什么要麻烦返回一个值。您可以直接调用res.end(),它将按预期工作(正如我所期望的)。看起来end()只是返回一个布尔值,但我不明白你为什么需要或想要返回任何东西。
传递给http.createServer的函数将作为请求事件的侦听器添加到EventEmitter实例中。
传递给EventEmitter的侦听器返回的返回值将被忽略,证明。
因此,在这种情况下使用return
语句的唯一好处是可以更早地返回,并在函数存在的情况下忽略它的其余部分,正如爆炸药丸所说的那样。
这个函数的返回值实际上不会去任何地方,尽管理论上它可以:
http.createServer = function (cb) {
if (cb()) { /* do something */ }
};
据我所知,.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
。
相关文章:
- Javascript返回值只在循环中返回一次
- XMLHttpRequest未返回值-状态202
- 根据是否解析了 Promise 从函数返回值
- Angular,函数在(模型)工厂中返回值
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何从客户端的数组中获取用户输入和返回值
- Javascript中带有返回值的嵌套函数
- 为变量分配多个nodejs导出返回值时出现问题
- 通过回调从onreadystatechange返回值
- 从Ajax函数返回值
- JavaScript生成器中收益率返回值的解析
- HTML如何根据javascript函数的返回值限制文本输入
- 返回值+new Date()与Date.now()是否不同
- 使用在函数外部声明的变量的 Javascript 返回值 + undefined
- 如何在Android中将Javascript返回值转换为String
- chrome.storage.sync.get未返回值-Angular服务
- 修复AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何从嵌套的API函数返回值
- angularjs如何从返回值中找到正确的属性
- 使用filedownload jquery插件处理FilePathResult返回值