NAPI 传递数据给JS

1. 基础数据

napi_create_int32(env, errCode, &jsValue);

napi_create_object(env, &jsObject);

napi_set_named_property(env, jsObject, "code", jsValue);

2.类对象

napi_value object = nullptr;
napi_create_object(env, &object);

std::unique_ptr<Callback> cb = std::make_unique<Callback>();
napi_wrap(env, object, cb.release(), Finalizer, nullptr, nullptr);

const char *moduleName = "callback";
BindNativeFunction(env, object, "onSuccess", moduleName, Success);
BindNativeFunction(env, object, "onFailed", moduleName, Failed);
BindNativeFunction(env, object, "onCanceled", moduleName, Canceled);

napi_value Callback::Success(napi_env env, napi_callback_info info)
{
    GET_NAPI_INFO_AND_CALL(env, info, Callback, OnSuccess);
}
napi_value Callback::Failed(napi_env env, napi_callback_info info)
{
    GET_NAPI_INFO_AND_CALL(env, info, Callback, OnFailed);
}
napi_value Callback::Canceled(napi_env env, napi_callback_info info)
{
    GET_NAPI_INFO_AND_CALL(env, info, Callback, OnCanceled);
}
napi_value Callback::OnSuccess(napi_env env, NapiCallbackInfo &info)
{
    HILOG_DEBUG("Called.");
    return CreateJsUndefined(env);
}

napi_value Callback::OnCanceled(napi_env env, NapiCallbackInfo &info)
{
    HILOG_DEBUG("Called.");
    return CreateJsUndefined(env);
}

napi_value Callback::OnFailed(napi_env env, NapiCallbackInfo &info)
{
    HILOG_DEBUG("Called.");
    return CreateJsUndefined(env);
}

3.结构体

napi_value jsObject = nullptr;
napi_value jsValue = nullptr;

int32 id = 10086;
napi_create_int32(env, id, jsValue);
napi_set_named_property(env, jsObject, "id", jsValue);

bool bFlag = true;
napi_get_boolean(env, bFlag, jsValue);
napi_set_named_property(env, jsObject, "flag", jsValue);

std::string str = "123";
napi_create_string_utf8(env, str.c_str(), str.size(), jsValue);
napi_set_named_property(env, jsObject, "name", jsValue);

4.调用函数

void JsAutoFillExtension::CallObjectMethod(const char *name, napi_value const *argv, size_t argc)
{
    HandleEscape handleEscape(jsRuntime_);
    napi_env env = jsRuntime_.GetNapiEnv();

    napi_value obj = jsObj_->GetNapiValue();

    napi_value method = nullptr;
    napi_get_named_property(env, obj, name, &method);

    napi_call_function(env, obj, method, argc, argv, nullptr);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值