EventEmitter
Node的事件模块中,⽬前只包含⼀个类:EventEmitter。这个类在Node的内置模块中被⼤量使⽤,在Node中,所有能
触发事件的对象都是EventEmitter类的实例。要使⽤EventEmitter,⾸先必须要继承它。
⼀.从EventEmitter类继承
问题
你希望通过事件驱动的⼿段来解决问题。你有⼀个类你希望在异步事件发⽣的时候来操作它。
解决办法
你需要创建⼀个基于EventEmitter类的⾃定义类,基于EventEmitter类得到的⽰例,都绑定了⼀个监听器,()⽤于监听事
件,()⽤于触发事件。下⾯是⼀个⾳乐播放器的实例:
⾸先实现对EventEmitter类的继承
constEventEmitter=require('events');
//所有的构造函数都必须继承⾃EventEmitter类;
classMusicPlayerextendsEventEmitter{};
//再通过这个构造函数来创建触发事件的对象
letmusicPlayer=newMusicPlayer();
通过继承创建的实例对象有绑定监听器,可以调⽤on,emit⽅法
letAudioDevice={
play:function(track){
//
},
stop:function(){
//
}
}
//监听事件
('play',function(track){
g=true;
(track);
})
//监听事件
('stop',function(track){
g=fal;
();
});
('play','TheRoots-TheFire');
tTimeout(function(){
//emit触发事件
('stop')
},1000);
⼆.添加多个监听器
我们可以给事件添加多个监听器,⽐如上⾯的⾳乐播放器,我们在play触发时需要做些其他的事情⽐如⽤户界⾯需要更新等。对play事件添加⼀个
新的监听器就能轻松实现。
('play',function(track){
g=true;
(track);
});
//添加新的监听器
('play',function(track){
('添加新的监听器')
});
三.移除监听器
Listener(eventname,fn):移除⼀个监听器
AllListeners([eventName]):移除所有的监听器
letplayFn1=function(track){
g=true;
(track);
}
('play',playFn1);
//移除监听器
EventListener('play',playFn1())
四.错误处理
通过监听error事件,来进⾏错误处理。
//错误处理
letplayFn1=function(track){
g=true;
(track);
//这⾥如果出现错误,就触发error事件
('error','unabletoplay')
}
('play',playFn1);
('error',function(err){
(err);
})
本文发布于:2022-11-27 09:35:36,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/30207.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |