HarmonyOS Listener 中的 Callback 如何触发的问题

收到消息时,需要将消息的 json 数据中需要搜索的字段入库,遇到的问题是在 ETS 层解析后的搜索字段无法正常的传给 CPP 层,牵涉到 ets 和 CPP 来回调用的问题单独的 Listener 和 单独的 Callback 以正常实现,但是 Listener 中包含 Callback 不知道如何实现

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

c++调用ArkTS接口是napi_call_function

ArkTS中的函数封装在object中参考如下实现:

export class Add{
  add(a:number, b:number):number{
    return a + b;
  }
}

export const NativeCallArkTS: (obj:Object, a: number, b: number) => number;

// C++调用JS
static napi_value NativeCallArkTS(napi_env env, napi_callback_info info) {
  // 期望从ArkTS侧获取的参数的数量,napi_value可理解为ArkTS value在native方法中的表现形式。
  size_t argc = 3;
  napi_value args[3] = {nullptr};

  // 从info中,拿到从ArkTS侧传递过来的参数。
  napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);

  // 获取对象的方法
  napi_value add;
  napi_get_named_property(env, args[0], "add", &add);

  // 获取函数入参
  double value0;
  napi_get_value_double(env, args[1], &value0);
  double value1;
  napi_get_value_double(env, args[2], &value1);

  // 创建两个个ArkTS number作为ArkTS function的入参。
  napi_value argv[2] = {nullptr};
  napi_create_double(env, value0, &argv[0]);
  napi_create_double(env, value1, &argv[1]);

  napi_value result = nullptr;
  // native方法中调用ArkTS function,其返回值保存到result中并返到ArkTS侧。
  napi_call_function(env, nullptr, add, 2, argv, &result);

  return result;
}

testNapi.NativeCallArkTS(new Add(), 2, 3)
分享
微博
QQ
微信
回复
1天前
相关问题
JSBind 如何调用 JS 方法 callback
1745浏览 • 1回复 待解决
使用js如何使用callback
354浏览 • 1回复 待解决
Js如何定义callback函数
2173浏览 • 1回复 待解决
JSUITouchMove连续触发问题
3663浏览 • 1回复 待解决
TSCallback类型找不到怎么回事?
2251浏览 • 1回复 待解决
Stack组件如何触发下层事件控件
292浏览 • 1回复 待解决
callback无法成功更新UI
1991浏览 • 1回复 待解决
HarmonyOS callback和await哪个性能好?
220浏览 • 1回复 待解决