在示例代码中,TEST_FUNC函数的主要流程是什么(包括函数创建、设置、调用等)?

阅读 607
1 个回答

TEST_FUNC函数主要流程如下:

  • 虚拟机初始化:检查是否已初始化虚拟机(通过isVMInit变量),若未初始化则调用OH_JSVM_Init进行初始化,并将isVMInit设为true,确保单个进程只初始化一次。
  • 创建函数:

    • 定义回调结构体cb,包含NativeCreateFunctionTest函数指针和"Hello World!"数据。
    • 使用OH_JSVM_CreateFunction创建函数,传入环境、空字符串(函数名将在设置属性时指定)、自动计算长度、回调结构体和函数对象指针,创建后检查函数是否创建成功(通过OH_JSVM_IsFunction接口)。
  • 设置函数:获取全局对象(OH_JSVM_GetGlobal),创建表示函数名的字符串(OH_JSVM_CreateStringUtf8),然后使用OH_JSVM_SetProperty将创建的函数设置到全局对象中,使JavaScript侧能够访问。
  • 调用函数:

    • 直接调用:创建参数数组(argv)并设置参数值(通过OH_JSVM_CreateStringUtf8创建字符串参数),然后使用OH_JSVM_CallFunction调用全局对象中的函数,传入环境、全局对象、函数对象、参数个数和参数数组以及结果指针,检查调用是否成功。
    • 通过脚本调用:创建表示JavaScript代码字符串的JSVM_ValuejsSrc),包含调用函数的代码,使用OH_JSVM_CompileScript编译代码,然后使用OH_JSVM_RunScript执行脚本,实现通过脚本间接调用函数,同样检查执行结果是否成功。
  • 资源清理:按顺序关闭HandleScopeEnvScope、销毁Env、关闭VMScope、销毁VM,释放相关资源。

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

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