Mal*_*rik 5 javascript node.js
可能是一个非常基本的问题,但我还没有在文档或谷歌中找到答案......
我正在做nodeschool的“learnyounode”模块,对于http客户端问题的介绍,找到了一个console.log不带参数使用的官方答案(实际上作为另一个函数中的args,但我理解):
var http = require('http')
http.get(process.argv[2], function (response) {
response.setEncoding('utf8')
response.on('data', console.log)
response.on('error', console.error)
})
Run Code Online (Sandbox Code Playgroud)
这是如何运作的?它看起来干净、明显,但如果没有更好地理解发生了什么,我不确定我是否可以自信地使用这种风格。
顺便说一句,为了进行比较(并看看我不明白什么),这是我自己的非常相似但更长的答案:
var http = require('http');
http.get(process.argv[2], function callback(response) {
response.setEncoding('utf8');
response.on('data', function(data) {
console.log(data);
});
response.on('error', function(error) {
console.error(error);
});
});
Run Code Online (Sandbox Code Playgroud)
很简单,看看你的代码
response.on('error', function(error) {
console.error(error);
});
Run Code Online (Sandbox Code Playgroud)
您在那里所做的就是编写了一个回调,该回调从错误事件中传递对象,然后您可以将其用作错误。
现在让我们看看其他代码
response.on('error', console.error)
Run Code Online (Sandbox Code Playgroud)
同样的情况也发生了,事件将其对象传递给回调函数,该回调console.error函数接受一个或多个对象。
所以像
let myLog = function(dataToLog) {
console.log(dataToLog);
}
response.on('error', myLog);
Run Code Online (Sandbox Code Playgroud)
也可以,希望这能让它更清楚一些。
| 归档时间: |
|
| 查看次数: |
2148 次 |
| 最近记录: |