napi_call_function接口在调用ArkTS侧函数时有哪些注意事项?

阅读 567
1 个回答

napi_call_function传入的argv的长度必须大于等于argc声明的数量,且argv需被初始化成nullptr。在C++代码中,先获取ArkTS侧入参,获取全局对象(因为该接口的第二个参数是JS函数的this入参,示例中使用napi_get_global获取全局对象),然后调用napi_call_function传入相关参数(包括环境、全局对象、函数参数、参数个数、参数数组等)进行函数调用,最后返回调用结果。示例代码如下:

#include "napi/native_api.h"

static napi_value CallFunction(napi_env env, napi_callback_info info) {
    size_t argc = 1;
    napi_value argv[1] = {nullptr};
    napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr);
    napi_value global = nullptr;
    napi_get_global(env, &global);
    napi_value result = nullptr;
    napi_call_function(env, global, argv[0], argc, argv, &result);
    return result;
}

ArkTS侧定义函数和类,通过Node - API模块调用相应函数(如testNapi.callFunction(returnNumber);testNapi.objCallFunction(person,person.age);)并通过日志输出结果。

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题