nodejs eventemitter,Node事件驱动Events模块提供了哪些方法-

  nodejs eventemitter,Node事件驱动Events模块提供了哪些方法?

  本文将带您浏览Node中的事件,并讨论事件驱动程序和EventEmitter类。希望对你有帮助!

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

  

Nodejs 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。

   Node.js几乎每个API都支持回调函数。

  基本上Node.js的所有事件机制都是由设计模式中的observer模式实现的。

  Node.js单线程类似于进入while(true)事件循环,直到没有事件观察器退出。每个异步事件都会生成一个事件观察器,如果事件发生,就会调用这个回调函数。

  

事件驱动程序

   Node.js使用事件驱动模型。当web服务器收到请求时,它会关闭并处理请求,然后为下一个web请求提供服务。

  当请求完成时,它被放回处理队列,当它到达队列的开始时,结果被返回给用户。

  这种模型非常高效且可伸缩,因为web服务器总是接受请求而不等待任何读写操作。(这也称为非阻塞IO或事件驱动IO)

  在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时会触发一个回调函数。

  Node.js有许多内置事件。我们可以通过引入events模块并实例化EventEmitter类来绑定和监视事件,如下例所示:

  //介绍事件模块

  var events=require( events );

  //创建eventEmitter对象

  var eventEmitter=新事件。event emitter();下列程序绑定事件处理程序:

  //绑定事件及其处理程序

  eventEmitter.on(eventName ,eventHandler);我们可以通过程序触发事件:

  //触发事件

  event emitter . emit( event name );

实例

  使用以下代码创建index.js文件:

  //引入fs模块

  var fs=require( fs );

  //介绍事件模块

  var events=require( events );

  //创建一个对象

  var ee=新事件。event emitter();

  //绑定事件及其处理程序

  ee.on(res ,function (data) {

  console . log( RES-1 );

  console.log(数据);

  });

  ee.on(res ,function () {

  console . log( RES-2 );

  });

  fs.readFile(hello.txt ,{flag:r ,编码: utf-8},function(err,data){

  如果(错误){

  Console.log(读取错误: err );

  }否则{

  Console.log(读取成功:数据);

  //触发res事件

  ee.emit(res ,data);

  }

  })接下来让我们执行上面的代码:

  

EventEmitter 类

  事件模块仅提供一个对象:事件。event emitter event emitter的核心是事件触发和事件监听器函数的封装。

  您可以传递require( events );以访问该模块。

  //介绍事件模块

  var events=require( events );

  //创建eventEmitter对象

  var eventEmitter=新事件。event emitter();如果在实例化过程中出现错误,EventEmitter对象将触发错误事件。添加newListener时,将触发NewListener事件,移除侦听器时,将触发removeListener事件。

  让我们用一个简单的例子来说明EventEmitter的用法:

  //event.js文件

  var event emitter=require(" events ")。EventEmitter

  var event=new event emitter();

  event.on(some_event ,函数(){

  Console.log(由some _ event事件触发);

  });

  setTimeout(function() {

  event . emit( some _ event );

  }, 1000);执行结果如下:

  运行此代码后,控制台在1秒钟后输出some_event 事件触发。原理是event对象注册一个事件some_event的监听器,然后我们通过setTimeout在1000毫秒后将事件some_event发送给event对象,这个时候就会调用some_event的监听器。

  $ node event.js

  Some_event事件触发一个EventEmitter。每个事件由一个事件名称和几个参数组成。事件名是一个字符串,通常表达一定的语义。EventEmitter为每个事件支持几个事件侦听器。

  当一个事件被触发时,注册到该事件的事件侦听器被依次调用,事件参数作为回调函数参数传递。

  让我们用下面的例子来解释这个过程:

  //event.js文件

  var events=require( events );

  var发射器=新事件。event emitter();

  emitter.on(someEvent ,function(arg1,arg2) {

  console.log(listener1 ,arg1,arg 2);

  });

  emitter.on(someEvent ,function(arg1,arg2) {

  console.log(listener2 ,arg1,arg 2);

  });

  Emitter.emit(someEvent , arg1参数, arg2参数);执行上面的代码,运行结果如下:

  $ node event.js

  Listener1 arg1参数arg2参数

  Listener2 arg1参数arg2参数在上面的例子中,emitter为事件someEvent注册了两个事件监听器,然后触发了someEvent事件。

  在运行结果中,我们可以看到两个事件监听器回调函数被相继调用。这是EventEmitter最简单的用法。

  EventEmitter提供了几个属性,比如onemiton函数用于绑定事件函数,emit属性用于触发事件。

  更多关于node的信息,请访问:nodejs教程!以上是讲Node.js中事件驱动和EventEmitter类的细节请关注我们的其他相关文章了解更多!

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

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