node events,nodejs event

  node events,nodejs event

  本文带你了解Node.js模块中的events模块,介绍什么是事件驱动,NodeJS的事件架构,Events模块的核心API等。希望对你有帮助!

  node.js速度课程简介:进入学习

  通过对Node的学习和应用,我们知道NodeJS采用单线程、事件驱动、非阻塞的I/O架构设计,非常适合高并发、I/O密集型的应用。

  

1. 什么是事件驱动?

  事件驱动。简单来说就是通过有效的方法来监听事件状态的变化,并在变化时做出相应的动作。

  拿一个生活应用场景来理解:我们去餐厅吃饭点餐,我们下单后,服务员告诉我们订单号(这个可以理解为注册一个事件),我们就坐着等。这个时候,我们的耳边总是响着服务员的叫号监听。当我们被叫的时候,我们可以去前台取餐。

  

2. 事件模型

   NodeJS的事件架构采用经典订阅发布模式。

  订阅模式,也可以称为消息机制,定义了一种依赖关系。这种依赖关系可以理解为一对N个(多个或单个)观察者同时监控一个对象相应的状态变化,一旦发生变化,通知所有观察者,从而触发观察者注册的相应事件。这种设计模式解决了主客体和观察者之间的功能耦合。

  

3. events模块

  事件模块是nodeJS的一个非常重要的模块。Node中的大部分模块都继承了Events类,比如fs、http、net等。它提供了一个对象事件。EventEmitter,而EventEmitter的核心是事件发射和事件监听器。

  简单使用:

  从“事件”中导入{ event emitter };

  MyEmiter类扩展了event emitter { };

  const my emitter=new my emit er();

  my mitter . on( hello ,()={

  Console.log(你好有人叫你);

  });

  my mitter . emit( hello );

4. Events模块核心API

  4.1 eventEmitter.on(eventName, callback)

  注册监控事件。

  参数:

  EventName:事件名回调:事件触发被调用的回调函数4.2 eventEmitter.once(eventName, callback)

  您可以注册一个侦听器,对于一个特定的事件,它最多只能被调用一次。一旦事件被触发,监听器将被注销,然后被调用。

  参数:

  EventName:事件名回调:事件触发被调用的回调函数4.3 eventEmitter.emit(eventName[, ...args])

  触发指定的监听事件

  参数:

  EventName:事件名args的可选参数,按顺序传入回调函数的参数中;4.4 eventEmitter.removeListener(eventName, callback)

  移除指定事件的侦听器。注意:监听器必须注册。否则无效。

  参数:

  事件名称:事件名称回调:回调函数4.5 EventEmitter.removeAllListeners(eventName)

  删除所有侦听器。一个事件可以有多个侦听器。当需要删除所有侦听器时,可以使用此方法。

  参数:

  EventName:需要完全移除的事件的名称;需要注意的是,如果不传递参数,所有的监控事件都会被移除,比较暴力。建议慎用。

  4.6 EventEmitter.listeners(eventName)

  为名为eventName的事件返回侦听器绑定回调函数数组的副本。

  4.7 EventEmitter.eventNames()

  返回触发器已注册侦听器的事件数组。

  4.8 EventEmitter.setMaxListeners(n)

  默认情况下,如果为特定事件添加了10个以上的侦听器,EventEmitter将打印一条警告。

  emitter.setMaxListeners()方法允许您修改这个特定EventEmitter实例的限制。该值可以设置为Infinity(或0 ),表示侦听器的数量不受限制。

  

5. 同步异步的问题

   EventEmitter按照注册的顺序同步调用所有侦听器。这确保了事件的正确顺序,并有助于避免竞态条件和逻辑错误。

  

6.错误处理

  当EventEmitter实例中出现错误时,典型的操作是触发“错误”事件。这些在Node.js中被视为特例

  如果EventEmitter没有为“error”事件注册至少一个侦听器并触发“error”事件,它将抛出一个错误,打印堆栈跟踪,然后退出Node.js进程。

  作为最佳实践,您应该始终为“错误”事件添加侦听器。

  从“事件”中导入{ event emitter };

  MyEmiter类扩展了event emitter { };

  const my emitter=new my emit er();

  my mitter . on( hello ,()={

  Console.log(你好有人叫你);

  });

  my mitter . on( error ,(e)={

  console.log(e)

  })

  my mitter . emit( hello );

  Myemitter.emit (error ,new error( a error occurs ))关于node的更多信息,请访问:nodejs教程!以上是关于Node.js中events模块的详细介绍,更多内容请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: