在node.js“request.on”中是什么这个“.on”

我是新的node.js和Java脚本,我不能find这个“.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); }); 

on方法一个事件绑定到一个对象。

这是一种expression意图的方式, 如果发生了什么事情(数据发送或错误的情况下), 然后执行作为参数添加的function。 这种编程风格被称为事件驱动编程 。 你可能想在维基百科中查找它

在node.js中,有一个名为EventEmitter的类,如果您决定在自己的代码中使用它们(我强烈build议以node.js的forms),它会为您提供基本事件所需的所有代码。 node.js EventEmitter的文档在这里

.on是一个用来绑定事件处理程序的方法。

http.get的callback是用一个参数(你已经命名为req )来调用的。 req ,简称为“request”,是一个通用的名称,因为这个参数是一个http.ClientRequest对象。 http.ClientRequest对象实现了stream.Writable ,下面是重要的一点:所有的stream都是EventEmitter的实例。

EventEmitter有一个名为on的函数,它为指定的事件添加一个侦听器函数。

“监听器function”只是“callback函数”的另一个名称

在你的例子中,你已经为data事件和error事件添加了一个监听器。 监听器function被EventEmitter 调用 (如同术语“callback”)。

额外的信用

如果您需要侦听器来停止侦听(即,您不再需要调用callback),则可以使用emitter.removeListener函数删除侦听器:

 var myCallback = function(e) { console.log('Got error: ' + e.message); } res.on('error', myCallback); // do some things... res.removeListener('error', myCallback); 

如果您只希望侦听器运行一次,则可以使用emitter.once而不是on函数,然后您不必删除它:

 res.once('error', myCallback);