CNode

我学习一下node,js中事件触发的类型里面的知识,有谁知道怎样看,教我一下

问答
Ssunboy25发布于5 年前最后回复5 年前14 回复3797 浏览0 收藏

我想问下像这样的事件注册函数emitter.on(eventName, listener),里的eventName可以有哪些,怎样查看?

查看回复

回复 (14)

G
guojingkang#1·5 年前
引用 sunboy25@guojingkang 那我就想不通了我这个server.on(listening,fun),这个listening事件是从那里来的,我只在net中net.server类中看到有这个事件。它...

@sunboy25 event 你可以理解为是一个数据结构,这个数据结构下面维护了这么一个 map

const eventsMap = {};
emitter.on = (eventName, fn) => {
	if(eventsMap[eventName]){
		eventsMap[eventName].push(fn)
	}else{
		eventsMap[eventName] = [fn]
	}
}

emitter.emit = ( eventName, args) => {
	eventsMap[eventName].forEach((fn) => {
		fn.call(this,args)
	})
}
S
sunboy25#2·5 年前
引用 guojingkang@sunboy25 event 你可以理解为是一个数据结构,这个数据结构下面维护了这么一个 map

@guojingkang 能不能把这个map位置发我一下的,我想看一下源码,这样是不是就能知道有多少事件可以用了?

Z
zengming00#4·5 年前

查文档

G
guojingkang#5·5 年前

eventName 不是自定义的吗?

S
sunboy25#6·5 年前
引用 guojingkangeventName 不是自定义的吗?

@guojingkang 你们是怎么知道的,是官网说明上写的吗?

G
guojingkang#9·5 年前
引用 sunboy25@guojingkang https://nodejs.org/dist/latest v14.x/docs/api/events.html events emitter on eventna...

image.png

emitter.on 函数要求 eventName 类型是字符串或者 symbol 即可,如果有明确的枚举值,会有说明的,下面举例也用到了 foo 。。。

S
sunboy25#10·5 年前
引用 guojingkangemitter.on 函数要求 eventName 类型是字符串或者 symbol 即可,如果有明确的枚举值,会有说明的,下面举例也用到了 foo 。。。

@guojingkang 是不是使用一些固定事件名就不需要在另外编写触发函数触发它?我怎么上传不了图片,怪事! Event: 'abort' Event: 'connect' Event: 'continue' Event: 'information' Event: 'response' Event: 'socket' Event: 'timeout' Event: 'upgrade'

G
guojingkang#11·5 年前
引用 sunboy25@guojingkang 是不是使用一些固定事件名就不需要在另外编写触发函数触发它?我怎么上传不了图片,怪事! Event: 'abort' Event: 'connect' Event: '...

@sunboy25 image.png

Event 是一个可以继承的类,每个 event 实例都有最基本的 on 和 emit 函数用来注册和触发事件,至于具体注册和触发什么的,由开发者本身去决定。比如我截图的这个,有若干个事件,是因为 NodeJs 源码中,http.server 继承了 event ,并注册了这些事件。不同的模块不同的类,nodeJs 源码给注册的事件是不同的。

S
sunboy25#12·5 年前
引用 guojingkang@sunboy25 Event 是一个可以继承的类,每个 event 实例都有最基本的 on 和 emit 函数用来注册和触发事件,至于具体注册和触发什么的,由开发者本身去决定。比如我截图的这...

@guojingkang q我想再问一下,你截图中http.server类下面的都叫事件吗?我原先以为写着事件的才叫事件呢,怪不得理解不了,另外这些事件在server.on(event,fun)时是不是都可以省略前面的sever,比如server.listening写成server.on(listening,fun)的形式?

S
sunboy25#14·5 年前
引用 guojingkang@sunboy25 写着是事件的才是事件,其他的不是

@guojingkang 那我就想不通了我这个server.on(listening,fun),这个listening事件是从那里来的,我只在net中net.server类中看到有这个事件。它怎么能用到这里的,net和http之间有什么联系吗?

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