EmitterUtils.ts 1.28 KB
import emitter from '@ohos.events.emitter';
import HashMap from '@ohos.util.HashMap';

const TAG: string = 'EmitterUtils';

/**
 * 线程间通信简单工具
 * TODO 待优化
 */
export class EmitterUtils {
  /**
   * 发送空消息
   * @param eventId 事件id
   */
  static sendEmptyEvent(eventId: number) {
    let event: emitter.InnerEvent = {
      eventId: eventId,
      priority: emitter.EventPriority.LOW
    };
    emitter.emit(event);
  }

  /**
   * 发送消息
   * @param eventId 事件id
   * @param data 数据
   */
  static sendEvent(eventId: number, data: { [key: string]: any; }) {
    let event: emitter.InnerEvent = {
      eventId: eventId,
      priority: emitter.EventPriority.LOW
    };
    let eventData: emitter.EventData = {
      data: data
    };
    emitter.emit(event, eventData);
  }

  /**
   * 接收消息
   * @param eventId 事件id
   * @param callback 回调函数
   */
  static receiveEvent(eventId: number, callback: (data?: { [key: string]: any; }) => void) {
    let event: emitter.InnerEvent = {
      eventId: eventId
    };

    // 收到eventId为1的事件后执行该回调
    let callback1 = (eventData: emitter.EventData): void => {
      callback(eventData.data)
    };

    // 订阅eventId为1的事件
    emitter.on(event, callback1);
  }
}