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

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

介绍

本示例使用'@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)
    }
相关推荐
子兮曰5 小时前
async/await高级模式:async迭代器、错误边界与并发控制
前端·javascript·github
恋猫de小郭5 小时前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
GIS之路7 小时前
ArcGIS Pro 中的 Notebooks 入门
前端
IT_陈寒8 小时前
React状态管理终极对决:Redux vs Context API谁更胜一筹?
前端·人工智能·后端
Kagol9 小时前
TinyVue 支持 Skills 啦!现在你可以让 AI 使用 TinyVue 组件搭建项目
前端·agent·ai编程
柳杉9 小时前
从零打造 AI 全球趋势监测大屏
前端·javascript·aigc
simple_lau9 小时前
Cursor配置MasterGo MCP:一键读取设计稿生成高还原度前端代码
前端·javascript·vue.js
睡不着先生9 小时前
如何设计一个真正可扩展的表单生成器?
前端·javascript·vue.js
天蓝色的鱼鱼9 小时前
模块化与组件化:90%的前端开发者都没搞懂的本质区别
前端·架构·代码规范
明君879979 小时前
Flutter 如何给图片添加多行文字水印
前端·flutter