您的位置:首页 > 汽车 > 新车 > 【HarmonyOS 4.0】@ohos.events.emitter (Emitter)

【HarmonyOS 4.0】@ohos.events.emitter (Emitter)

2024/11/17 18:29:08 来源:https://blog.csdn.net/weixin_43900414/article/details/141888540  浏览:    关键词:【HarmonyOS 4.0】@ohos.events.emitter (Emitter)
  1. B页面需要感知到A页面的点击事件,进而触发B页面的刷新逻辑,类似这种公共的事件通知,就可通过 emitter 来实现。
  1. 导入 emitter 模块
  1. 发布和订阅都需要导入 emitter 模块。
  2. import emitter from '@ohos.events.emitter'
  1. emitter.emit
  1. 发送一个事件到事件队列。发送自定义事件。
  2. emitter.emit(event: InnerEvent 1 , data?: EventData 2 ): void
emitter.emit({eventId: 1,priority: emitter.EventPriority.IMMEDIATE
})
  1. emitter.on
  1. 持续订阅某个事件以及接收事件的回调处理。订阅自定义事件。
  2. emitter.on(event: InnerEvent 1 , callback: Callback): void
@State postInfoList: Array<PostInfo> = [new PostInfo(this.init_post)]
@StorageProp('token') @Watch('onTokenChange') token: string = ''
@State page: number = 1
@State total: number = 0async getPostInfoPage() {let response = await getAllPost({page: this.page,size: 10})response.records.forEach(item => {this.postInfoList.push(item)})this.total = response.totalthis.page += 1
}refresh() {this.postInfoList = []this.total = 0this.page = 1this.getPostInfoPage()
}aboutToAppear(): void {if (this.token) {this.getPostInfoPage()}emitter.on({ eventId: 1 }, () => {this.refresh()})
}onTokenChange() {if (this.token) {this.getPostInfoPage()} else {this.postInfoList = []this.total = 0this.page = 1}
}
  1. emitter.once
  1. 单次订阅某个事件以及接收事件的回调处理,接收到回调处理后自动取消订阅。
  2. emitter.once(event: InnerEvent 1 , callback: Callback): void
  1. emitter.off
  1. 取消订阅某个事件。
  2. emitter.off(eventId: number): void

  1. InnerEvent 进程内的自定义事件对象。
    {
    eventId: number, 事件的ID,由开发者定义用来辨别事件。
    priority: emitter.EventPriority 3
    } ↩︎ ↩︎ ↩︎

  2. EventData 发送事件时传递的数据。类型为 [key: string]: any。 ↩︎

  3. EventPriority 用于表示事件被投递的优先级。
    IMMEDIATE(0):表示事件被立即投递。
    HIGH(1):表示事件先于LOW优先级投递。
    LOW(2):表示事件优于IDLE优先级投递,事件的默认优先级是LOW。
    IDLE(3):表示在没有其他事件的情况下,才投递该事件。 ↩︎

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com