import testNapi from 'libentry.so';
@Entry
@Component
struct Index {
@State message: string = 'Hello World';
//private resmgr = getContext().resourceManager; // 获取js的资源对象
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {
//hilog.info(0x0000, 'testTag', 'Test NAPI 2 + 3 = %{public}d', testNapi.add(2, 3));
//let rawfileContet = testNapi.getRawFileContent(this.resmgr, "rawfile1.txt");
//console.log("rawfileContet" + rawfileContet);
testNapi.addSync(3, 4, (result)=>{
this.message = `result is $(result)`
});
})
}
.width('100%')
}
.height('100%')
}
}
export const addSync: (a: number, b: number, callback:(result:number)=>void) => number;
static napi_value AddSync(napi_env env, napi_callback_info info) {
size_t requireArgc = 3;
size_t argc = 3;
napi_value args[3] = {nullptr};
napi_value context = nullptr;
napi_get_cb_info(env, info, &argc, args, &context, nullptr);
SampleTheread();
napi_valuetype valuetype0;
napi_typeof(env, args[0], &valuetype0);
napi_valuetype valuetype1;
napi_typeof(env, args[1], &valuetype1);
double value0;
napi_get_value_double(env, args[0], &value0);
double value1;
napi_get_value_double(env, args[1], &value1);
napi_value callBackArg[1] = {nullptr};
napi_create_double(env, value0 + value1, &callBackArg[0]);
napi_value sum;
napi_call_function(env, context, args[2], 1, callBackArg, &sum);
return sum;
}
static napi_value Init(napi_env env, napi_value exports)
{
napi_property_descriptor desc[] = {
{"add", nullptr, Add, nullptr, nullptr, nullptr, napi_default, nullptr},
{"addSync", nullptr, AddSync, nullptr, nullptr, nullptr, napi_default, nullptr},
{"getRawFileContent", nullptr, GetRawFileContent, nullptr, nullptr, nullptr, napi_default, nullptr}};
napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
return exports;
}
参考上述实现