在进行NDK 开发的时候,经常会用到napi_get_cb_info 这个方法这个方法到底是什么意思,官方文档没有具体的解释,或者解释对小白来说很不友好,没有C基础的经验的完全看不明白。在这我通过我的理解给大家解释下:
一、napi_get_cb_info
用途:将ArkTS 中传入的参数、this 指针等信息进行获取到(例如在处理 JavaScript 调用 C++ 函数时使用)。
他的方法原型为:
napi_status napi_get_cb_info(
napi_env env,
napi_callback_info cbinfo,
size_t argc,
napi_value* argv,
napi_value* this_arg,
void** data
);
|

参数名 类型 作用
env napi_env N-API 环境变量(上下文),用于关联当前 Node.js 实例的状态。
cbinfo napi_callback_info 输入参数,回调信息对象(由 N-API 传入回调函数,包含参数数据)。
argc size_t 输入参数,回调信息对象(由 N-API 传入回调函数,包含参数数据)。
argv napi_value 输出参数,指针数组,用于存储提取到的参数(每个元素是 napi_value 类型,对应 JavaScript 传入的参数)。若实际参数数量少于 argc,多余位置会被设为 nullptr。
this_arg napi_value* 输出参数,指针,用于存储回调中的 this 指针(对应 JavaScript 中的 this 对象)。可设为 nullptr 表示不需要提取。
data void** 输出参数,指针,用于提取回调函数关联的用户数据(需提前通过 napi_create_function 绑定,可设为 nullptr 表示不需要提取)

比如:
size_t argc = 2; // Number of parameters.
napi_value args[2] = {nullptr}; // A napi array that stores parameters.

// Obtain the parameters and store them in the NAPI parameter array.
if (napi_ok != napi_get_cb_info(env, info, &argc, args, nullptr, nullptr)) {
    OH_LOG_Print(LOG_APP, LOG_ERROR, 0xFF00, "NumberType", "api_get_cb_info failed");
    return nullptr;
}
就是代表从传入的参数里面取出2个参数,赋值给args[2]  这个对象
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐