【Node.js】事件触发器 - 基础篇
![【Node.js】事件触发器 - 基础篇](https://static001.geekbang.org/infoq/db/db1c592a1c12c74c17093c9fdb632af1.jpeg)
node
想要触发一个事件,可不像前端开发那样有 onclick
等事件可以触发。
1、引入 events 事件模块
在 node
中,触发事件前,需要先通 require
引入事件模块
复制代码
这样就把事件模块引入,并赋给变量 events
了。
2、创建 EventEmitter 对象
复制代码
通过 new
关键字,创建 EventEmitter
对象,并赋给变量 myEmitter
3、注册事件
复制代码
通过 on
关键字,注册一个名叫 rabbit
的事件,该事件接受一个参数。这里用了 ES6
的写法,如果没参数传过来,msg
的值就是 I'm Rabbit
。
4、触发事件
复制代码
通过 emit
关键字,触发已写好的事件。
输出结果
![](https://static001.geekbang.org/infoq/56/566839c3a8c106b208aef137b3c03778.png)
可以看到 Terminal 输出两行。
第一行没传參,所以输出默认值。
第二行传參,所以输出参数值。
下面的代码是同步执行的。
复制代码
![](https://static001.geekbang.org/infoq/f1/f1fad1898ca47e3a5ec3417aa4419a6a.png)
能清晰看到,“hello node!”这句是最后才执行的。
如果希望这些事件是异步执行的,就是执行 rabbit 事件的同时也执行其后的代码的话,可以通过 setImmediate 这个方法。
复制代码
![](https://static001.geekbang.org/infoq/f2/f290ec79c91e059b12a5ff5befe4a8db.png)
因为执行 rabbit
事件是需要一点时间的(虽然这时间对于人来说可以忽略不计),但执行最后的 console.log
会更快,所以这里的输出顺序会有所变化。
评论