鸿蒙next emitter

85 阅读1分钟

import { emitter } from '@kit.BasicServicesKit'


@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  async testWoker() {
    let eventData: emitter.EventData = {
      data: {
        "content": "c",
        "id": 1,
      }
    };

    let innerEvent: emitter.InnerEvent = {
      eventId: 1,
      priority: emitter.EventPriority.HIGH
    };

    emitter.emit(innerEvent, eventData);
  }

  aboutToAppear() {
    let innerEvent: emitter.InnerEvent = {
      eventId: 1
    };

    // 收到eventId为1的事件后执行回调函数
    emitter.on(innerEvent, () => {
      console.info('callback');
    });
  }

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            this.testWoker();
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

事件回调


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


@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  async testWoker() { 
    // 定义一个eventId为1的事件,事件优先级为Low
    let event: emitter.InnerEvent = {
      eventId: 1,
      priority: emitter.EventPriority.LOW
    };

    let eventData: emitter.EventData = {
      data: {
        content: 'c',
        id: 1,
        isEmpty: false
      }
    };

    // 发送eventId为1的事件,事件内容为eventData
    emitter.emit(event, eventData);
  }

  aboutToAppear() { 
    // 定义一个eventId为1的事件
    let event: emitter.InnerEvent = {
      eventId: 1
    };

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

    // 订阅eventId为1的事件
    emitter.on(event, callback);
    promptAction.showToast({
      message: 'app.string.emitter_subscribe_success_toast'
    });
  }

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            this.testWoker();
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}