CNode

求解一个node入门问题,on()和addListener()的区别

问答
HHongzhiZhao发布于11 年前最后回复11 年前8 回复28717 浏览0 收藏

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

问题:

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

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

查看回复

回复 (8)

R
russj#1·11 年前

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

M
microlv#3·11 年前

如同jq里的on,bind

J
joyeecheung#4·11 年前

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

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

EventEmitter还有这么个测试……

assert.equal(E.on, E.addListener); // Same method.
H
HongzhiZhao#6·11 年前
引用 HongzhiZhao@russj 谢谢,明白了

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

X
XadillaX#7·11 年前

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

看这里就明白了:

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

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

B
berwin#8·11 年前

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

参与回复
登录后即可参与回复。登录