napi_make_callback接口在异步操作完成后如何执行ArkTS回调函数?

阅读 611
1 个回答

在C++代码中,先完成异步操作相关的准备工作(如获取参数、初始化异步上下文、打开回调作用域等),然后判断要执行的函数类型是否为napi_function,若是则调用napi_make_callback接口,传入环境、异步上下文、接收器对象、函数、参数个数、参数数组等参数来执行ArkTS回调函数,并获取回调函数的执行结果。若函数类型判断不通过则抛出错误。示例代码如下:

#include "napi/native_api.h"

static napi_value AsynchronousWork(napi_env env, napi_callback_info info) {
    //... 前面获取参数等操作
    napi_async_context context;
    //... 初始化异步上下文操作
    napi_callback_scope scope = nullptr;
    //... 打开回调作用域操作
    napi_valuetype funcType;
    napi_typeof(env, func, &funcType);
    napi_value result = nullptr;
    if (funcType == napi_function) {
        napi_make_callback(env, context, recv, func, 1, argv, &result);
    } else {
        napi_throw_error(env, nullptr, "Unexpected argument type");
        return nullptr;
    }
    //... 关闭回调作用域等后续操作
    return result;
}

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题