gpt4 book ai didi

javascript - console.log() 作为 response.on() 中的回调

转载 作者:行者123 更新时间:2023-11-30 00:27:47 25 4
gpt4 key购买 nike

在下面的代码中,我使用 node.js 发出一个简单的 get 请求并将响应记录到控制台。这工作得很好,但为什么呢? response.on 部分发生了什么?为什么 console.logconsole.error 可以不带任何参数

var http = require('http')
http.get('http://www.google.com/index.html', function (response) {
response.setEncoding('utf8')
response.on('data', console.log) // <---
response.on('error', console.error) // <---
})

最佳答案

他们确实接受争论。它们将参数视为 response.on 的回调为它们提供的任何内容。

将内联函数作为匿名函数传递:

response.on('data', function(data){ // anonymous function passed inline
console.log(data);
});

与在外部定义它们并通过按名称传递它们相同:

...
response.on('data', callback)
...
function callback(data){ // < named function defined outside
console.log(data);
}

本质上,您所做的是获取整个内联函数,在外部定义它,并为其命名callback。然后你通过这个名字作为参数传递给它,你之前定义了整个函数内联。
(在我看来,这也是一种更好的做法。特别是如果您发现自己将内联函数传递到不止一个级别,您可能会遇到严重的回调 hell 问题。(more info))

同样,console.log 也是一个(命名的)函数,因此您也可以将其作为参数传递:

response.on('data', console.log)

关于javascript - console.log() 作为 response.on() 中的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30794919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com