美文网首页
emitter事件封装及使用

emitter事件封装及使用

作者: 冰点雨 | 来源:发表于2024-08-22 17:54 被阅读0次

封装 EmitterUtil类


import { emitter } from '@kit.BasicServicesKit';


export  class EmitterUtil{
/**
 * 发送事件
 * eventId:事件标识
 * data:传递的数据
 */
  static publicEmitter(eventId:number,data: object){
    let event:emitter.InnerEvent = {
      eventId:eventId,
      priority:emitter.EventPriority.LOW
    }

    let eventData:emitter.EventData = {
      data:data
    }
    emitter.emit(event,eventData)
    console.log('––––––––––––––– 【Emitter事件】发布事件 –––––––––––––––')
  }

  /**
   * 订阅事件
   */
  static emitter(eventId:number,callback:(eventData:object)=>void){
    // 定义一个eventId为1的事件
    let event: emitter.InnerEvent = {
      eventId: eventId
    };
    emitter.on(event,(eventData:emitter.EventData)=>{
      callback(eventData.data!)
      console.log('––––––––––––––– 【Emitter事件】订阅事件 ––––––––––––––– \n data:'+eventData.data!)
    })
  }
}

export default new EmitterUtil();

使用:

发布事件:

import {EmitterUtil} from '../../utils/EmitterUtil';

let eventData = new Object({
          key:value
        })
  EmitterUtil.publicEmitter(1,eventData)

订阅事件

import {EmitterUtil} from '../../utils/EmitterUtil';

 // 订阅Emitter事件
    EmitterUtil.emitter(1,(data:object)=>{
      console.log('––––––––––––––– 【Emitter事件】成功–––––––––––––––')
      console.log(data['key']);
    })

相关文章

网友评论

      本文标题:emitter事件封装及使用

      本文链接:https://www.haomeiwen.com/subject/qehwkjtx.html