emitter.on(‘事件名称’,(cb)=>{ } ) --> B注册事件
1.被通知方B监听 通知方A 的更新
emitter.emit(‘事件名称’) -> A发送事件
2.通知方A 触发B的 cb回调函数
官网介绍:
导入模块:
import emitter from '@ohos.events.emitter';
封装一个方法:
class Emitter { // Record<Keys,Type> 构造一个对象类型,其属性键为Keys,属性值为Type private emitters: Record<string, Function[]> = {} on(eventName: string, cb: Function) { // on收集回调函数: // cb存放的时候 和eventName是对应关系 { eventName: [cb1,cb2...] } // 没有绑定过需要先初始化{ 事件名: []} if (!this.emitters[eventName]) { this.emitters[eventName] = [] } this.emitters[eventName].push(cb) } emit(eventName: string, arg?: string) { this.emitters[eventName].forEach(cb => { cb(arg) }) } } const emitter = new Emitter()
调用:
A组件:
emitter.emit('emitName', 'A组件中的参数')
B组件:
cbFromB = (arg: string) => {
console.log('我是B组件中的cb方法', arg)
}
emitter.on('emitName', (arg: string) => {
this.cbFromB(arg)
})
总结:
A: emitter.on('事件名',cb) 收集回调函数
B: emitter.emit('事件名') 触发回调函数的执行