通过emitter实现worker间线程通讯

通过emitter实现worker间线程通讯

HarmonyOS
2024-05-20 21:28:50
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
coolhead2000

worker中的postmessage只能与宿主线程进行通讯,在某些场景下需要子线程间通讯。引入emitter进行线程间通讯。

核心代码解释

// worker1 emitter.emit 发送'eventId:2'的监听串发送消息 
let eventData: emitter.EventData = { 
  data: { 
    "id": 2, 
    "content": "worker is closing", 
  } 
}; 
emitter.emit("eventId:2", eventData); 
  
// worker2 监听'eventId:2'事件,并发送新的eventId:1的监听事件 
emitter.on('eventId:2', (eventData:emitter.EventData) => { 
  let obj = eventData.data as  Record<string,String> 
  console.info('callback 2, content:' + obj["content"]+', id='+ obj["id"]); 
  emitter.emit('eventId:1', createWorker1) 
});

实现效果

在worker1 close的时候,发送监听事件,worker2收到监听事件后发送新的事件给主线程,主线程收到监听事件后重新new worker1。

分享
微博
QQ
微信
回复
2024-05-21 17:23:47
相关问题
HarmonyOS emitter 线程切换问题
289浏览 • 1回复 待解决
js Fa如何实现线程通信?
5428浏览 • 1回复 待解决
Worker线程如何销毁?
283浏览 • 1回复 待解决
Worker线程内存如何共享
2197浏览 • 1回复 待解决
Worker的宿主线程必须是主线程吗?
331浏览 • 1回复 待解决
如何创建一个worker线程
825浏览 • 1回复 待解决
如何在Worker中开启多级子线程
258浏览 • 1回复 待解决
Worker和TaskPool的线程数量是否有限制
1815浏览 • 1回复 待解决
HarmonyOS 如何实现组件通信
285浏览 • 1回复 待解决
Worker线程的使用,有谁知道啊?
898浏览 • 1回复 待解决