HarmonyOS 线程通信 事件循环问题

export class Tester  { 
  public u:string=''; 
  public  startTester() { 
    emitter.once("new_model", (eventData) => { 
      this.u=eventData.data!.new_model.mode; 
      Logger.d(TAG,"监听:"+eventData.data!.new_model.mode); 
    }); 
    let task: taskpool.Task = new taskpool.Task(startDetectRP2PWithSessionModel,info); 
    taskpool.execute(task) 
    Logger.d(TAG,"结束"); 
  } 
  @Concurrent 
  function startDetectRP2PWithSessionModel(model: SessionModel){ 
    emitter.emit("new_model", { data: { "new_model": new_model } }); 
  }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

打印结果:

结束

监听:RP2P

对JS 异步编程不是很了解,想请问的是emitter.once这种事件监听为什么没有立刻触发?而怎么会是被扔到event loop的队尾执行?想要的是:

监听:RP2P

结束

有办法实现吗?

HarmonyOS
2024-09-06 11:04:35
287浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zbw_apple

发送事件可以用,【emit(eventId: string, options: Options, data?: EventData): void 发送指定优先级事件】文档如下:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-emitter-V5#emitteremit优先级枚举里面有IMMEDIATE,表示事件被立即投递。

分享
微博
QQ
微信
回复
2024-09-06 15:18:11


相关问题
HarmonyOS Worker 与主线程通信问题
903浏览 • 1回复 待解决
TaskPool子线程和主线程如何通信
3256浏览 • 1回复 待解决
HarmonyOS Swiper循环问题
1022浏览 • 1回复 待解决
HarmonyOS事件通信能力解决方案
1977浏览 • 1回复 待解决
TaskPool如何跟主线程进行通信
1342浏览 • 1回复 待解决
基于libuv异步库进行线程通信
2701浏览 • 0回复 待解决
HarmonyOS webview通信问题
803浏览 • 1回复 待解决
js Fa如何实现线程通信
6326浏览 • 1回复 待解决
公共事件实现跨进程通信
1616浏览 • 1回复 待解决
如何排查循环引用的问题
1620浏览 • 1回复 待解决
native侧如何跟ArkTS侧子线程通信
781浏览 • 1回复 待解决
HarmonyOS线程线程切换问题
1653浏览 • 1回复 待解决
HarmonyOS 线程切换问题
1145浏览 • 1回复 待解决