avi*_*abs 21 javascript node.js
我是node.js和java脚本的新手,我找不到这个".on"关键字的含义.当我用另一个单词代码更改失败时.
var req = http.get("http://www.google.com", function(res) {
console.log("Got response: " + res.statusCode);
res.on('data', function (chunk) {
});
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
Run Code Online (Sandbox Code Playgroud)
使用单个参数(您已命名)调用http.get的回调req.req,"request"的缩写,是一个通用名称,因为这个参数是一个http.ClientRequest对象.http.ClientRequest对象实现了stream.Writable,这是重要的一点:所有流都是EventEmitter的实例.
EventEmitter有一个名为on的函数,它为指定的事件添加一个监听器函数.
"监听功能"只是"回调功能"的另一个名称
在您的示例中,您已为data事件和error事件添加了侦听器.EventEmitter 调用监听器函数(ergo术语"回调").
额外信用
如果您需要一个监听器来停止监听(即,您不再希望调用回调),则可以使用emitter.removeListener函数删除监听器:
var myCallback = function(e) { console.log('Got error: ' + e.message); }
res.on('error', myCallback);
// do some things...
res.removeListener('error', myCallback);
Run Code Online (Sandbox Code Playgroud)
如果您只想要一个侦听器运行一次,您可以使用emitter.once而不是该on函数,然后您不必删除它:
res.once('error', myCallback);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25652 次 |
| 最近记录: |