node.js和node,node是js吗

  node.js和node,node是js吗

  本文带你了解一下node中的EventEmitter,简单说说异步操作,错误事件,EventEmitter类。希望对你有帮助!

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

  

events(事件触发器)

   events是nodejs的内置事件触发器。node的许多内置模块都使用事件。例如,http.server每次收到请求时都会触发事件,stream使用on来根据事件的使用情况监听相应的事件。

  所有触发事件的对象都是EventEmitter实例,它公开EventEmitter.on (event ,callback)。通常,EventTmitte.on用于注册事件,EventEmitter.emit触发事件。

  示例:

  const events=require( events );

  const event=新事件();//实例化EventEmitter

  event.on(data ,(a,b)={

  Console.log(参数 a b)

  console.log(this,“this”)

  //注意,如果callback是一个箭头函数,这将指向全局对象。

  //如果callback是function(){}的形式,这将绑定到EventEmitter实例。

  Console.log(“发出触发了数据事件”)

  })

  event.emit(data ,1,2);//使用emit来触发事件异步操作

  因为EventEmitter.on (event name ,callback)中的回调是同步执行的,但是有些情况下我们不得不使用异步操作,所以可以使用SetImmediate来执行异步操作。

  const events=require( events );

  const event=新事件();

  event.on(event ,(a,b)={

  setImmediate(()={

  console.log(“这是异步发生的”);

  });

  //因为这里的监听器是同步执行的,所以我们可以使用setImediate函数来等待监听器中的其他内容被执行。

  });

  event.emit(event ,1,2);触发一次

  当我们正常通过emit触发事件时,emit会多次触发几个事件,但是我们可以用once注册事件,用once触发的事件只能触发一次。

  const event emitter=require( events );

  const MyEventEmitter=new event emitter();

  设a=0;

  //正常注册事件和触发器

  MyEventEmitter.on(add ,()={

  a

  console.log(a)

  })

  myeventemitter . emit( add );//1;

  myeventemitter . emit( add );//2;

  //注册一次

  MyEventEmitter.once(add ,()={

  a

  console . log(a);

  })

  MyEventEmitter.emit(add) //1

  MyEventEmitter.emit(add) //不再有效error事件

  EventEmitter没有错误事件,只能在出错时强制退出执行,所以我们要自己注册一个错误事件,这样出错时就会触发错误事件。

  const event emitter=require( events );

  const MyEventEmitter=new event emitter();

  MyEvenEmitter.on(error ,(err)={

  Console.error(err,“已报告错误”)

  })除了以上方式,我们还可以通过errorMonitor来监控emit触发的错误,而不需要注册错误事件。

  有了errorMonitor,我们不需要手动注册错误事件。

  const {EventEmitter,error monitor }=require( events );

  const MyEventEmitter=new event emitter();

  MyEventEmitter.on(errorMonitor,(err)={

  console . log(err);

  })

  我的事件发射器(错误,新错误(错误))EventEmitter类

  newListener事件

  当我们添加事件监控时,newListener事件会被触发,所以我们可以注册newListener事件来做一些添加事件监控时的事情。

  const { event emitter }=require( events );

  const my event=new event emitter();

  MyEvent.on(newListener ,(name,litener)={

  //name是您正在收听的事件的名称。

  //listener是事件的处理程序。

  MyEvent.on(event ,()={

  console . log( newListener中添加的事件)

  })

  })

  MyEvent.on(event ,()={

  Console.log(“正常注册的事件事件”)

  })

  //如果我们此时不触发event事件,就会执行newListener事件,因为只要我们在注册事件,就会触发newListener事件。

  //注意:newListener事件必须用EventEmitter.once()注册,因为如果我们在newListener事件中添加注册事件,而外面又有多个注册事件,那么newListener事件就会被多次触发,就会发生堆栈溢出。

  my event . emit(“event”);

  //打印结果

  //在newListener中注册的事件

  //正常注册事件removeListener事件

  removeListener事件用于删除已注册的事件,但removeListener不会阻止由emit触发的事件。

  const callback=()={

  console.log(B )

  }

  const callbackA=()={

  console.log(A )

  event.removeListener(data ,callbackB)

  }

  event.on(data ,callbackA)

  event.on(data ,callbackB)

  event . emit( data );//执行callbackA时数据被删除,但不会阻止触发器丢弃下一个发出。

  event . emit( data );//addListener 和on的作用一样到了这里就真的删了。

  eventNames

  返回包含所有已注册事件名称的数组。

  const { event emitter }=require( events );

  const my event=new event emitter();

  MyEvent.on(data ,()={ });

  MyEvent.on(finish ,()={ });

  console . log(my event . event names());

  //打印结果

  [数据,完成]getMaxListeners

  返回可以注册的最大事件数。默认值为10。如果超过10个事件,将会出现警告。

  但是我们可以通过setMaxListener(20)修改它

  const { event emitter }=require( events );

  const my event=new event emitter();

  console . log(my event . getmax listener());//10

  event . setmaxlistener(20);

  console . log(my event . getmax listener(20));listenerCount

  已注册事件的数量。

  const { event emitter }=require( events );

  const my event=new event emitter();

  MyEvent.on(data ,()={ });

  MyEvent.on(data ,()={ });

  MyEvent.on(finish ,()={ });

  console . log(my event . listener count())//2有关node的更多信息,请访问:nodejs教程!那就是要深入讲node.js中EventEmitter的细节请关注我们的其他相关文章了解更多!

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

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