event-emitter
解释: 在小程序开发中,总会遇到事件监听派发的需求,smt-event-emitter是一个订阅发布器。eventsEmitter可通过new EventsEmitter()创建返回。小程序中使用三方npm包方法,见npm使用说明。
方法参数
eventsEmitter对象上的方法
fireMessage方法参数说明
onMessage方法参数说明
onMessage方法的options参数
delHandler方法参数说明:
merge方法参数说明:
代码示例
在开发者工具中预览效果
扫码体验
请使用百度APP扫码
图片示例
安装
npm install @smt-lib/event-emitter
代码示例1
// 订阅发布常规用法 const eventsEmitter = new EventsEmitter(); let a = 0; eventsEmitter.onMessage('addA', message => { a += message.num; }); eventsEmitter.fireMessage({ type: 'addA', num: 5 }); console.log(a); // 5
代码示例2
// 先发布后订阅 const eventsEmitter = new EventsEmitter(); let a = 0; eventsEmitter.fireMessage({ type: 'addA', num: 5 }); eventsEmitter.fireMessage({ type: 'addA', num: 5 }); eventsEmitter.onMessage('addA', message => { a += message.num; }, { listenPreviousEvent: true }); console.log(a); // 10
代码示例3
// 监听多个type变化 const eventsEmitter = new EventsEmitter(); let a = 0; eventsEmitter.onMessage(['addA', 'addB'], message => { a += message.num; }); eventsEmitter.fireMessage({ type: 'addA', num: 5 }); eventsEmitter.fireMessage({ type: 'addB', num: 5 }); console.log(a); // 10
代码示例4
// 监听类型为*时,执行任何fireMessage都会调用回调 const eventsEmitter = new EventsEmitter(); let a = 0; let b = 0; eventsEmitter.onMessage('addA', message => { a += message.num; }); eventsEmitter.onMessage('*', message => { b += message.num; }); eventsEmitter.fireMessage({ type: 'addA', num: 5 }); console.log(b); // 5
代码示例5
// 删除某个type下的具体回调 const eventsEmitter = new EventsEmitter(); let a = 0; let b = 0; const addA = message => { a += message.num; }; const addB = message => { b += message.num; }; eventsEmitter.onMessage('addA', addA); eventsEmitter.onMessage('addA', addB); eventsEmitter.fireMessage({ type: 'addA', num: 5 }); eventsEmitter.delHandler('addA', addA); eventsEmitter.fireMessage({ type: 'addA', num: 5 }); console.log(a); // 5 console.log(b); // 10
代码示例6
// 删除所有回调 const eventsEmitter = new EventsEmitter(); let a = 0; const addA = message => { a += message.num; }; eventsEmitter.onMessage('addA', addA); eventsEmitter.onMessage('addB', addA); eventsEmitter.fireMessage({ type: 'addA', num: 5 }); eventsEmitter.delHandler('*'); eventsEmitter.fireMessage({ type: 'addB', num: 5 }); console.log(a); // 5
代码示例7
// 融合多条事件流成为一条 const eventsEmitterA = new EventsEmitter(); const eventsEmitterB = new EventsEmitter(); const mergedEventsEmitter = EventsEmitter.merge(eventsEmitterA, eventsEmitterB); let a = 0; mergedEventsEmitter.onMessage(['addA', 'addB'], message => { a += message.num; }); eventsEmitterA.fireMessage({ type: 'addA', num: 5 }); eventsEmitterB.fireMessage({ type: 'addB', num: 5 }); console.log(a); // 10
