美文网首页
鸿蒙的Emitter,实现线程通信

鸿蒙的Emitter,实现线程通信

作者: 呐呐呐nana | 来源:发表于2024-12-26 14:59 被阅读0次

此文章内容兼容API12,使用harmony next应用开发
Emitter 对标 Eventbus,实现同进程同线程、同进程跨线程通信

基本使用

1,发送数据

//1
emitter.emit({
      eventId: eventId,  // eventId -> number 类型
      priority: emitter.EventPriority.HIGH
    }, {
      data: xxx // { string:any }
    });
//2
emitter.emit('id')
//3
emitter.emit('id',{
      data: {
        "content": data,
      }
    })

2,监听

public static listen(eventId: number, callback:Callback<emitter.EventData>) {
    emitter.on({ eventId: eventId }, callback)
  }

3,取消监听

  • 一般在 aboutToDisappear 处调用
  • 注销时,eventid与回调对象需配对,否则回调注销失败
emitter.off(eventId);

属性

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

2,传递的数据 data,类型是 { [key: string]: any }

3,重复注册

  • eventId一样,且关联的回调对象为同一个,则只会在第一次注册的回调对象生效
  • eventId一样,且关联的回调对象不同,则多个回调对象均生效,根据注册顺序决定回调顺序
方法

1,单词订阅事件,执行完回调函数后,自动取消订阅

public static listenOnce(eventId: number, callback:Callback<emitter.EventData>) {
    emitter.once({ eventId: eventId }, callback)
  }

相关文章

  • 多线程 | 线程通信

    1. while实现线程通信 //线程二需要while轮询 才能实现线程间通信,对cup消耗很大//线程主动读取 ...

  • Java线程通信

    线程通信 线程通信指的是多个线程在运行的期间,相互之间的数据交互协作。 1.通信方式 实现多个线程直接的协作,涉及...

  • iOS进程间通信

    线程间通信 :通过performSelector系列的方法 可以实现 各种线程间的通信(通信 :调用与传参)进程间...

  • Android线程间通信

    android线程间通信的四种实现方式 通过Handler机制 子线程与子线程之间通信 unOnUiThread方...

  • Java多线程(2)

    Java多线程(2) 线程间的通信 线程间的通信又称为进程内通信,多个线程实现互斥访问共享资源时会互相发送信号或等...

  • Handler是如何实现线程间通信的?

    Handler是如何实现线程间通信的?

  • 十分钟了解Java并发编程

    线程、线程池、锁、线程通信、数据结构 一、线程 线程的实现方式有三种(重写Thread的run方法、实现Runna...

  • Java线程通信-线程协调API

    线程通信 想要实现多个线程之间的协同,如:线程执行顺序,获取某个线程执行结果等,则需要使用线程之间互相通信。 文件...

  • JUC中线程之间得通信

    使用synchronized实现线程间通信,线程间通信:1、生产者+消费者2、通知等待唤醒机制.多线程编程模板:1...

  • 1.1.5 线程通信

    通信的方式 要想实现多个线程之间的协同,如:线程执行先后顺序、获取某个线程执行的结果等等。涉及到线程之间相互通信,...

网友评论

      本文标题:鸿蒙的Emitter,实现线程通信

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