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 } }); 
  }

打印结果:

结束

监听:RP2P

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

监听:RP2P

结束

有办法实现吗?

HarmonyOS
2024-09-06 11:04:35
浏览
收藏 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
相关问题
TaskPool子线程和主线程如何通信
2342浏览 • 1回复 待解决
HarmonyOS事件通信能力解决方案
886浏览 • 1回复 待解决
HarmonyOS Swiper循环问题
407浏览 • 1回复 待解决
基于libuv异步库进行线程通信
1915浏览 • 0回复 待解决
TaskPool如何跟主线程进行通信
574浏览 • 1回复 待解决
js Fa如何实现线程通信
5528浏览 • 1回复 待解决
公共事件实现跨进程通信
879浏览 • 1回复 待解决
HarmonyOS线程线程切换问题
626浏览 • 1回复 待解决
如何排查循环引用的问题
532浏览 • 1回复 待解决
fegin 和 docker 通信问题
2699浏览 • 1回复 待解决
HarmonyOS 线程相关问题
511浏览 • 1回复 待解决
HarmonyOS 线程切换问题
570浏览 • 1回复 待解决
HarmonyOS 经典蓝牙的socket通信问题
365浏览 • 1回复 待解决
HarmonyOS emitter 线程切换问题
398浏览 • 1回复 待解决
HarmonyOS 事件穿透问题
549浏览 • 1回复 待解决
Axios与Log循环依赖问题
241浏览 • 1回复 待解决