http.get的回调使用单个参数(您已命名req
)调用。req
是“请求”的缩写,是一个通用名称,因为此参数是一个http.ClientRequest对象。http.ClientRequest 对象实现了 stream.Writable,这是重要的一点:所有流都是EventEmitter的实例。
EventEmitter 有一个名为on的函数,它为指定的事件添加一个监听函数。
“监听函数”只是“回调函数”的别称
在您的示例中,您为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);