在node.js"request.on"这是什么".on"

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)

Seb*_*ann 27

方法结合事件的对象.

如果发生了某些事情(在您的情况下发送了数据或错误),表达您的意图,然后执行作为参数添加的功能.这种编程风格称为事件驱动编程.您可能想在维基百科中查找它

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


xda*_*azz 8

.on是一种用于绑定事件处理程序的方法.


2To*_*oad 5

使用单个参数(您已命名)调用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)