实现不同线程间通信功能鸿蒙示例代码

本文原创发布在华为开发者社区,更多鸿蒙场景化示例请见华为开发者联盟官网"行业实践与常见问题"专题页。

介绍

本示例使用'@ohos.events.emitter'模块,实现了在同一进程不同线程间通信的能力,包括单次订阅事件、取消订阅事件,以及发送信息能力。

实现不同线程间通信功能源码链接

效果预览

使用说明

  1. 启动应用后输入框内输入要发送的信息;
  2. 点击'Send Message to B'按钮发送,下方会更新输入框内容;
  3. 点击'Unsub'按钮取消订阅,再次发送信息接收不到。

实现思路

  1. emitterSub(eventId: number, eventCallback: Callback<emitter.EventData>) 这个函数用于订阅一个特定的事件。当该事件被触发时,会调用传入的回调函数。

  2. emitterSend(eventId: number, eventParam: string)这个函数用于发送一个特定的事件,并附带一些数据。

  3. emitterShut(eventId: number)这个函数用于取消对某个事件的订阅。

typescript 复制代码
    export function emitterSub(eventId: number, eventCallback: Callback<emitter.EventData>) {
    let event: emitter.InnerEvent = {
        eventId: eventId
    }
    emitter.on(event, eventCallback)
    }

    export function emitterSend(eventId: number, eventParam: string) {
    let event: emitter.InnerEvent = {
        eventId: eventId
    }
    let eventData: emitter.EventData = {
        data: {
        param: eventParam
        }
    };
    emitter.emit(event, eventData)
    }

    export function emitterShut(eventId: number) {
    emitter.off(eventId)
    }
相关推荐
stayong5 分钟前
市面主流跨端开发框架对比
前端
庞囧18 分钟前
大白话讲 React 原理:Scheduler 任务调度器
前端
东华帝君30 分钟前
react 虚拟滚动列表的实现 —— 动态高度
前端
CptW32 分钟前
手撕 Promise 一文搞定
前端·面试
温宇飞33 分钟前
Web 异步编程
前端
腹黑天蝎座33 分钟前
浅谈React19的破坏性更新
前端·react.js
东华帝君34 分钟前
react组件常见的性能优化
前端
第七种黄昏34 分钟前
【前端高频面试题】深入浏览器渲染原理:从输入 URL 到页面绘制的完整流程解析
前端·面试·职场和发展
angelQ34 分钟前
前端fetch手动解析SSE消息体,字符串双引号去除不掉的问题定位
前端·javascript
Huangyi34 分钟前
第一节:Flow的基础知识
android·前端·kotlin