鸿蒙开发-Emitter是如何进行消息传递的

357 阅读1分钟

Emitter

是什么

Emitter主要提供发送和处理事件的能力,包括订阅事件(on)、发送事件(emit)、取消订阅(off)事件的功能。我们通过发送事件,来触发所有订阅的事件的执行。

适用场景

Emitter可以进行页面间,组件间,进程间,线程间进行数据传递

mindmap
      Emitter
          (订阅事件---emitter.on)
          (发送事件---emitter.emit)
          (取消订阅---emitter.off)
    

案例 头像上传显示上传进度

当我们在进行头像上传进度显示百分比就需要用到Emitter进行数据传递

效果展示

image.png

实现逻辑

image.png

  1. 计算出上传进度
  2. 发送事件emitter.emit将拿到的上传进度发送给订阅事件emitter.on
  3. 订阅事件将拿到的数据传递给message并渲染到页面

为什么不用组件传值

我们创建的弹窗是通过new出来的对象,并且我们在弹窗的同时传递数据,只能拿到第一次的数据,尽管使用监听器监听百分比变化也无法拿到变化的数据,无法实现动态渲染