购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.2 事件发射器

在Node.js中,事件发射器是定义在events模块的EventEmitter类。获取EventEmitter类的方式如下。

当EventEmitter类实例新增监听器时,会触发newListener事件;当移除已存在的监听器时,则触发removeListener事件。

5.2.1 将参数和this传给监听器

eventEmitter. emit()方法可以传递任意数量的参数到监听器函数。当监听器函数被调用时,this关键词会被指向监听器所绑定的EventEmitter实例。以下是示例。

也可以使用ES6的lambda表达式作为监听器,但this关键词不会指向EventEmitter实例。以下是示例。

本节例子可以在“events-demo/parameter-this.js”和“events-demo/parameter-lambda.js”文件中找到。

5.2.2 异步与同步

EventEmitter会按照监听器注册的顺序同步地调用所有监听器。所以必须确保事件的排序正确,且避免竞态条件。可以使用setImmediate()或process.nextTick()切换到异步模式。

本节例子可以在“events-demo/set-immediate.js”文件中找到。

5.2.3 仅处理事件一次

当使用eventEmitter.on()注册监听器时,监听器会在每次触发命名事件时被调用。

使用eventEmitter.once()可以注册最多可调用一次的监听器。当事件被触发时,监听器会被注销,然后再调用。

本节例子可以在“events-demo/emitter-once.js”文件中找到。 VjJLXJAD8IBjhPt3//HLEsgxx8n6sEMkNvhuDi3BU7MAx8jgqAa1WF8weG0NS/xo

点击中间区域
呼出菜单
上一章
目录
下一章
×