这篇文章给大家分享的是有关节点。js中的事件是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
前端对事件肯定不陌生,为窗口绑定滚动事件
window.addEventListener(& # 39;滚动# 39;,ev=比;{ console.log (ev); });
节点。js大部分异步操作使用事件驱动,所有可以触发事件的对象都继承了<代码> EventEmitter> 代码类
节点上。js事件监听使用jQuery API和非常类似<代码>发射器。(eventName侦听器)代码>
const ee=new EventEmitter (); ee.on (& # 39; foo # 39;,()=比;console.log(& # 39;一个# 39;));
- <李> EventEmitter实例会维护一个侦听器数组,每次听众默认会被添加到数组尾部李> <李>每次添加听众不会检查是否添加过,多次调用> prependListener
<代码>发射器。prependListener (eventName侦听器)代码>
通过prependListener可以把听众添加到听众数组头部
const ee=new EventEmitter (); ee.prependListener (& # 39; foo # 39;,()=比;console.log(& # 39;一个# 39;));
一旦如果希望侦听器被触发一次后就不再触发,可以使用> const ee=new EventEmitter (); ee.once (& # 39; foo # 39;,()=比;console.log(& # 39;一个# 39;));
<代码>发射器。发出(eventName […args) 代码>
在浏览器环境中开发者事件相关的大部分工作是订阅事件,也就是绑定事件处理函数的倾听者,在节点。js事件编程中经常需要创建事件对象,在合理实际触发事件。使用发出方法可以按照侦听器注册的顺序,<强>同步>强地调用每个注册到名为eventName的事件的监听器,并传入提供的参数
const EventEmitter=要求(& # 39;事件# 39;); const myEmitter=new EventEmitter ();//第一个监听器。 myEmitter.on(& # 39;事件# 39;,函数firstListener () { console.log(& # 39;第一个监听器& # 39;); });//第二个监听器。 myEmitter.on(& # 39;事件# 39;,函数secondListener (__arg1、最长){ 控制台。日志(“第二个监听器中的事件有参数$ {__arg1} ${最长}'); });//第三个监听器 myEmitter.on(& # 39;事件# 39;,函数thirdListener (args) { 常量参数=args.join (& # 39; & # 39;); 控制台。日志(“第三个监听器中的事件有参数${参数}'); }); console.log (myEmitter.listeners(& # 39;事件# 39;)); myEmitter.emit(& # 39;事件# 39;,1,2,3,4,5);//输出://(//功能:firstListener,//功能:secondListener,//(功能:thirdListener)//)//第一个监听器//第二个监听器中的事件有参数1、2//第三个监听器中的事件有参数1,2,3,4,5
<代码> eventEmitter.emit() 代码>方法可以传任意数量的参数到侦听器,这<代码> 代码>关键词会被指向听众所绑定的EventEmitter实例
const myEmitter=new myEmitter (); myEmitter.on(& # 39;事件# 39;,函数(a, b) { 控制台。日志(a, b,这个===myEmitter);//打印://b MyEmitter {//域:空,//_events:{事件:[功能]},//_eventsCount: 1、//_maxListeners:未定义}真的 }); myEmitter.emit(& # 39;事件# 39;,& # 39;一个# 39;,& # 39;b # 39;);
也可以使用ES6的箭头函数作为监听器。但这<代码> 代码>关键词不会指向EventEmitter实例:
const myEmitter=new myEmitter (); myEmitter.on(& # 39;事件# 39;,(a, b)=比;{ 控制台。日志(a、b);//打印:b {} }); myEmitter.emit(& # 39;事件# 39;,& # 39;一个# 39;,& # 39;b # 39;);
<代码> EventEmitter> 代码以注册的顺序同步地调用所有监听器,这样可以确保事件的正确排序,侦听器可以使用<代码> setImmediate() 代码>和<代码> process.nextTick() 代码>方法切换到异步的操作模式
const myEmitter=new myEmitter (); myEmitter.on(& # 39;事件# 39;,(a, b)=比;{ setImmediate(()=比;{ console.log(& # 39;异步地发生& # 39;); }); }); myEmitter.emit(& # 39;事件# 39;,& # 39;一个# 39;,& # 39;b # 39;);
节点。js提供了几种卸载事件绑定的方法
关闭/removeListener
从方法是removeListener方法的别名,用于清理事件绑定<代码>发射器。removeListener (eventName侦听器)代码>