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

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

介绍

本示例使用'@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)
    }
相关推荐
前端小巷子6 分钟前
跨域问题解决方案:开发代理
前端·javascript·面试
前端_逍遥生6 分钟前
Chrome 插件开发到发布完整指南:从零开始打造 TTS 朗读助手
前端·chrome
Mintopia6 分钟前
Three.js 材质与灯光:一场像素级的光影华尔兹
前端·javascript·three.js
天涯学馆8 分钟前
JavaScript 跨域、事件循环、性能优化面试题解析教程
前端·javascript·面试
掘金一周16 分钟前
别再用 100vh 了!移动端视口高度的终极解决方案| 掘金一周7.3
前端·后端
晴殇i18 分钟前
CSS 迎来重大升级:Chrome 137 支持 if () 条件函数,样式逻辑从此更灵活
前端·css·面试
咚咚咚ddd20 分钟前
cursor mcp实践:网站落地页性能检测报告(browser-tools)
前端
MiyueFE21 分钟前
让我害怕的 TypeScript 类型 — — 直到我学会了这 3 条规则
前端·typescript
Hilaku21 分钟前
2025年,每个前端都应该了解的CSS选择器:`:has()`, `:is()`, `:where()`
前端·css
OLong24 分钟前
2025年最强React插件,支持大量快捷操作
前端·react.js·visual studio code