通过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) 
});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

实现效果

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

分享
微博
QQ
微信
回复
2024-05-21 17:23:47
相关问题
HarmonyOS emitter 线程切换问题
1223浏览 • 1回复 待解决
js Fa如何实现线程通信?
6307浏览 • 1回复 待解决
Worker线程如何销毁?
871浏览 • 1回复 待解决
Worker线程内存如何共享
3076浏览 • 1回复 待解决
Worker的宿主线程必须是主线程吗?
1156浏览 • 1回复 待解决
如何创建一个worker线程
1716浏览 • 1回复 待解决
HarmonyOS Worker 与主线程通信问题
863浏览 • 1回复 待解决
如何在Worker中开启多级子线程
1019浏览 • 1回复 待解决