顺晟科技
2021-06-16 10:35:21
185
var listenerObj //订阅者模式
函数publicListener() {
this.handlers={}
}
publicListener.prototype={
:函数(事件类型,处理程序){
var self=this
if(!(self.handlers中的事件类型)){
自我。处理程序[EventType]=[];
}
self.handlers[eventType].推送(处理程序);
归还这个;
},
//触发事件(发布事件)
emit:函数(事件类型){
var self=this
//若没有注册该事件则抛出错误
if(!(this.handlers中的事件类型
返回新错误('无效事件)
}
变量处理程序参数=数组。原型。切片。呼叫(参数,1);
for(var I=0;自我。事件类型处理程序.长度;i ) {
self.handlers[eventType][i].应用(自身、手柄);
}
回归自我;
},
//删除订阅事件
off:函数(类型,处理程序){
if(!(键入这个。handlers){
返回新错误('无效事件)
}
if(!handler) {
//直接移除事件
删除这个。经手人[类型]
} else {
const idx=this.handlers[type].findIndex(ele=ele===handler)
//抛出异常事件
if (idx===未定义){
返回新错误('无该绑定事件)
}
//移除事件
这个。经手人[类型]。拼接(idx,1)
if (this.handlers[type].length===0) {
删除这个。经手人[类型]
}
}
归还这个;
}
}
函数侦听器(){
if (listenerObj==undefined) {
listenerObj=new publicListener()
}
返回listenerObj
}
/**
* 抛出的公有方法或者属性
*/
module.exports={
listener:监听器,
}
使用
发布消息:
if (listenerObj!=未定义){
listenerObj.emit('message ',数据)
}
接收消息:
let listener=SocketAdapter。侦听器()
var self=this
listener.on('listChat ',函数(数据){
self.ctx.update(0,data,()={
})
self.setData({
数组: SocketAdapter。列表数组
})
插座适配器。insertlistcharraystorage()
})},
移除消息:
/**
* 生命周期函数-监听页面卸载
*/
onUnload:函数(){
listener.off('listChat ',null)
},
11
2022-12
17
2022-03
18
2021-11
19
2021-06
16
2021-06
16
2021-06