在节点中.js "request.on"这是什么".on"



我是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);
});

上的方法将事件绑定到对象。

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

在node.js中,有一个名为EventEmitter的类,如果您决定在自己的代码中使用它们,它将为您提供基本事件所需的所有代码(对于node.js,我强烈建议使用这些代码)

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

http.get的回调是用一个参数调用的(您已将其命名为req)。req,"请求"的缩写,是一个常见的名称,因为这个参数是http。ClientRequest对象。http。ClientRequest对象实现流。可写,重要的一点是:所有流都是EventEmitter的实例。

EventEmitter有一个在上调用的函数,它为指定的事件添加了一个侦听器函数。

"监听器函数"只是"回调函数"的另一个名称

在您的示例中,您为data事件和error事件添加了一个侦听器。侦听器函数由EventEmitter调用(术语"回调")。

额外信贷

如果您需要侦听器停止侦听(即,您不再希望调用回调),可以使用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);

最新更新