18910140161

微信小程序中JS订阅者模式的使用

顺晟科技

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)

},

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航