美文网首页
nodejs——事件发射器

nodejs——事件发射器

作者: 含泪若笑 | 来源:发表于2018-01-18 17:17 被阅读49次

Nodejs是基于V8引擎实现的事件驱动IO。事件模块Events是Nodejs的核心模块之一,许多模块都继承自Event模块,因此也能够发射事件。例如,http模块创建HTTP服务器时,会发射"connect"事件,断链接时会发射“ close”事件。这些对象在Node中被称为:事件发射击器。需要处理这些事件的对象可以订阅事件,并将回调函数绑定到这些事件上。事件发射器发射事件时,对应的回调函数就会被调用。

Nodejs中,自定义一个事件发射非常简单,实现一个继承自event.EventEmitter的伪类。

EventEmitter与回调函数密不可分,而回调函数就是后继传递风格的一种体现。后继传递风格是一种控制流通过参数传递的风格。简单的说就是把后继,也就是下一步要运行的代码,封装成函数,通过参数传递的方式传给当前运行的函数。

事件发射器模式的优点是:函数运行中发送多个时间时,使用时间监听的模式更容易handle。

监听事件中有一个特例"error",即使不监听error,当error事件发生时,事件发射器会注意到它,并向上抛一个未捕获的异常。

应用事件发生器API:(1)emitter.once(event, listener)添加一个一次性监听器,这个监听器只会在下一次事件发生时被触发一次,触发完成后就被删除。(2) emitter.addListener(event, listener)添加一个监听器至特定事件的监听器数组尾部,和 on 方法一样。(3) emitter.removeListener(event, listener)从一个事件的监听器数组中删除一个监听器,注意:此操作会改变监听 数组中当前监听器后的所有监听器在的下标。(4)emitter.removeAllListener(event, listener)删除所有监听器。

注意:事件发射器模式允许多个事件监听器监听同一事件发射器的同一类型的事件,但是如果前面的抛出异常,后面的监听器将不会被调用。

上面的代码重新定义了once,获取事件后,取消回调函数的注册方法,同事调用原来的回调函数。

事件发射器的使用:

(1)实现一个事件发生器

Nodejs中,自定义一个事件发射非常简单,实现一个继承自event.EventEmitter的伪类。inherits是util模块中方法用于复制父对象中的方法。代码中util.inherits就是建立了一条原型链,使MyClass类具有了EventEmitter类的原型方法。示例如下:

(2)发射及监听事件

继承EventEmitter类后,MyClass类的实例就可以发射事件了,添加一个事件发射器:

当MyClass类的实例调用sendEvent方法时,就会发送一个myEvent的事件。事件被发射的同时,还可以同时发送一些数据,上面示例中的:'arg 1'和'arg 2'就是被发送的数据。事件被发射时,两个字符串会做为参数发送给事件监听器。下面实例化MyClass类,并在类实例中创建事件监听,及发送事件:

相关文章

  • nodejs——事件发射器

    Nodejs是基于V8引擎实现的事件驱动IO。事件模块Events是Nodejs的核心模块之一,许多模块都继承自E...

  • Node.js核心模块 事件驱动--events和error

    nodejs最重要的模块。提供了事件唯一的接口。 一. 事件发射器 概念events木块只提供了一个对象: eve...

  • RxJava2.X版本-zip语法

    一:zip语法练习 日志 总结 1、组合事件的过程就是分别从发射器 A 和发射器 B 各取出一个事件来组合,并且一...

  • spring事件

    一、 1、事件类要继承ApplicationEvent类 2、发射器要实现ApplicationEventPubl...

  • 第三章-nodejs基础知识

    本章将学习nodejs基础框架,分为五个部分:nodejs的控制台、事件处理机制、事件环机制、为事件指定事件以及取...

  • Nodejs事件循环

    Nodejs是基于事件驱动的,实际上与dom操作的操作事件差不多,诸如onclick之流 Nodejs定义事件需要...

  • nodejs入门总结一:安装,运行,REPL运行环境

    nodejs学习目录 一、nodejs简介,安装,运行 二、REPL运行环境 三、事件循环,事件模块,Node.j...

  • Node事件循环和多进程

    nodejs事件循环与多进程 why 事件循环对于深入理解nodejs异步至关重要fs, net,http,eve...

  • 02.NodeJs基本语法

    一.认识NodeJs 1.NodeJs的事件驱动和异步IO 缺点: 2.npm介绍: ​ 是nodejs自带的...

  • 编写事件驱动模型

    Nodejs本身是基于事件驱动的,这个都知道。如果你看过Nodejs events模块,应该很了解Nodejs是如...

网友评论

      本文标题:nodejs——事件发射器

      本文链接:https://www.haomeiwen.com/subject/zbmioxtx.html