求解一个node入门问题,on()和addListener()的区别
发布于 10 年前 作者 HongzhiZhao 27621 次浏览 最后一次编辑是 8 年前 来自 问答

读教程时看到在服务器端响应post请求的时候,文章里用触发data和end事件去处理数据流,用req.addListener实现对事件的侦听,代码如下: 1.jpg 但是读Node API的时候看到了官网上用req.on()实现了同样的功能,代码如下: 2.jpg

问题:

  1. 想请问一下各位,on和addListner有什么区别?在API里看到了这段话: 3.jpg 所以我自己理解这两个方法功能是一样的,但是为什么同样功能的方法要定义两种形式?

2.如何在API里查看req和res这两个对象的成员属性和方法?我没找到在哪里…(请勿吐槽,新手见谅)

8 回复

on 和 addListener 没有区别,别名而已。估计是程序员懒,on 少打字但是又没 addListener 直白

如同jq里的on,bind

参考Readable的代码(server的request继承之),两者相同。

Readable.prototype.addListener = Readable.prototype.on;

EventEmitter还有这么个测试……

assert.equal(E.on, E.addListener); // Same method.

@russj 谢谢,明白了

@HongzhiZhao 多谢,学习了,很有用的测试码

https://github.com/iojs/io.js/blob/v1.x/lib/events.js#L244

看这里就明白了:

EventEmitter.prototype.on = EventEmitter.prototype.addListener;

@joyeecheung 上方才是 emitter 的原出处。

别名。。都一样的,没区别

回到顶部