在原生方法(初始化数据)、executeCB、completeCB之间传递数据structAddonData{napi_async_workasyncWork=nullptr;napi_deferreddeferred=nullptr;napi_refcallback=nullptr;doubleargs[2]={0};doubleresult=0;};// 业务逻辑处理函数,由worker线程池调度执行。
在原生方法(初始化数据)、executeCB、completeCB之间传递数据structAddonData{napi_async_work asyncWork=nullptr;napi_deferred deferred=nullptr;napi_ref callback=nullptr;doubleargs[2]={0};doubleresult=0;};// 业务逻辑处理函数,由worker线程池调度执行。
napi_valueasync_resource_name,napi_async_execute_callbackexecute,napi_async_complete_callbackcomplete,void*data,napi_async_work*result)参数说明:[in]env:传入接口调用者的环境,包含js引擎等,由框架提供,默认情况下直接传入即可。
callBackContext->result = callBackContext->data.append("on_async_execute_callback");return; }/** * 异步完成函数 * @param env * @param status * @param data */staticvoidon_async_complete_callback(napi_env env, napi_status status,void*data){ CallBackContext *callBackContext = (CallBackC...
napi_async_complete_callback complete, void* data, napi_async_work* result) 1. 2. 3. 4. 5. 6. 7. 复制 storage 模块——同步异步接口封装 模块简介 本示例通过实现 storage 模块展示了同步和异步方法的封装。storage 模块实现了数据的保存、获取、删除、清除功能。
napi_status napi_create_async_work(napi_env env, napi_value async_resource, napi_value async_resource_name, napi_async_execute_callback execute, napi_async_complete_callback complete, void* data, napi_async_work* result) [in] env:调用 API 的环境。
napi_status napi_create_async_work(napi_env env, napi_value async_resource, napi_value async_resource_name, napi_async_execute_callback execute, napi_async_complete_callback complete, void* data, napi_async_work* result); napi_value HttpRequestHandler::fetch(napi_env env, std::string url,...
[0]); napi_call_function(env, nullptr, recvCallback, 1, argv, &ret); napi_delete_reference(context->env, context->recvCallbackRef); napi_delete_async_work(context->env, context->work); delete context; } void callbackPreDo(napi_env env, void *data) { // OH_LOG_Print(LOG_APP, ...
NAPI_CALL(env, napi_create_async_work(env, nullptr, workName,ExecuteCallback, CompleteCallback, data, &work)); data->work = work; NAPI_CALL(env, napi_queue_async_work(env, work)); return promise; } EXTERN_C_START static napi_value Init(napi_env env, napi_value exports)...
libuv是一个基于事件驱动的异步io库,NAPI用它来实现了异步工作处理流程。 napi_create_async_work()创建异步工作时要求传入的execute_callback()和complete_callback(),也是沿用了libuv内部uv_queue_work的工作方式(见OpenHarmony\third_party\libuv\src\threadpool.c)。