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);
}