HarmonyOS NDK开发文档不全 & js传递函数给Native,Native怎么复用此函数

  1. FUNC

napi_call_function

在Native方法中调用js function,即native call js。 这些文档没有参数说明, 函数的每个参数的意义是什么,看不到

  1. 我想实现在js层实现一个回调函数, native可以多次回调这个函数。 看文档上说不禁止缓存env, 那我应该怎么多次调用js传递到native的函数呢? 有没有相应的Demo课参考
HarmonyOS
6天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

napi_call_function函数可参考node.js的官方API文档:

https://nodejs.org/api/n-api.html#napi_call_function

native call js可以通过如下两种方式:

第一种,在ArkTS侧将ArkTS函数作为属性存放到global对象当中(globalThis.xxx = xxx),然后在native侧通过napi_get_global获取global对象,再通过napi_get_named_property获取global对象的指定属性的属性值(指定为xxx,就可以获取到ArkTS函数),然后再通过napi_call_function就可以去回调它。

第二种 ,在native侧Init函数里,通过napi_define_properties将ArkTS函数(例如函数a)和C++函数(例如函数A)绑定到一起。在ArkTS侧调用函数a,调用时将用于回调的另外的ArkTS函数(例如函数b)作为实参传给函数a,在native侧的函数A里通过napi_get_cb_info接收ArkTS函数b,再用napi_call_function去回调它。

无需缓存,直接传即可,比如:

static napi_value Add(napi_env env, napi_callback_info info)
{
  size_t requireArgc = 2;
  size_t argc = 2;
  napi_value args[2] = {nullptr};

  napi_get_cb_info(env,  info, &argc, args , nullptr, nullptr);

  napi_valuetype valuetype0;
  napi_typeof(env, args[0], &valuetype0);
}
分享
微博
QQ
微信
回复
6天前
相关问题
TS侧如何批量传递函数native
1030浏览 • 1回复 待解决
父组件给子组件传递函数
376浏览 • 1回复 待解决
HarmonyOS router参数不能传递函数
100浏览 • 1回复 待解决
native使用fork函数,出现cppcrash
1709浏览 • 1回复 待解决
Native调用ArkTS侧类函数
1074浏览 • 1回复 待解决
HarmonyOS ArkTS注册Native C函数监听
388浏览 • 1回复 待解决
HarmonyOS 推送相关开发文档和资料
165浏览 • 1回复 待解决
ArkTs怎么传递对象或者类给Native
2475浏览 • 1回复 待解决
Js如何定义callback函数
2196浏览 • 1回复 待解决
native开发怎么引入curl库
2160浏览 • 1回复 待解决
弹窗组件调用父组件函数传递
1171浏览 • 1回复 待解决
HarmonyOS nativejs代码调用
116浏览 • 1回复 待解决