node 官方文档通篇没有明确说明 on
方法的来源,但是很多地方又都在使用,抱着刨根究底的心态查资料得知:
在 Node.js 中,所有的流都是继承自 stream.Readable
类或它的子类的。因此,所有的流都有一个on()
方法,可以用于注册事件监听器。
在使用流时,通常可以使用 on()
方法来监听流的各种事件,如数据可读事件、数据读取完毕事件、错误事件等。这个方法在 Node.js 的核心模块中实现,是一个通用的方法,可以用于所有流对象。
在 Node.js 中,request.on()
方法是用于监听 HTTP 请求事件的。它是通过 Node.js 内置的 http 模块中的 IncomingMessage
类实现的,IncomingMessage
类是一个流类,它继承自 Node.js 内置的 stream.Readable
类。
stream.Readable
类是一个流类,支持事件监听,因此它有一个on
方法,可以用于注册事件监听器。通过继承,IncomingMessage
类也继承了这个方法,因此我们可以使用 request.on()
的方式来监听 HTTP 请求中的事件。