HarmonyOS 鸿蒙Next napi_call_function 是否支持子线程

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next napi_call_function 是否支持子线程

我在子线程调用了napi_call_function,出现以下错误:

#00 pc 00000000001867ac /system/lib/ld-musl-aarch64.so.1(raise+192)(22804f9f8561143341806b615b5a21f8)
#01 pc 0000000000138114 /system/lib/ld-musl-aarch64.so.1(abort+20)(22804f9f8561143341806b615b5a21f8)
#02 pc 00000000001e16a8 /system/lib64/platformsdk/libark_jsruntime.so(panda::ecmascript::EcmaVM::CheckThread() const+640)(c6b7d03bf28ec19f3fdd4cd68a94a2bb)
#03 pc 00000000003614e0 /system/lib64/platformsdk/libark_jsruntime.so(panda::ecmascript::JSThread::DoStackLimitCheck()+108)(c6b7d03bf28ec19f3fdd4cd68a94a2bb)
#04 pc 000000000024c934 /system/lib64/platformsdk/libark_jsruntime.so(panda::ecmascript::EcmaInterpreter::Execute(panda::ecmascript::EcmaRuntimeCallInfo*)+44)(c6b7d03bf28ec19f3fdd4cd68a94a2bb)
#05 pc 00000000003e1bf4 /system/lib64/platformsdk/libark_jsruntime.so(panda::FunctionRef::CallForNapi(panda::ecmascript::EcmaVM const, panda::JSValueRef, panda::JSValueRef* const*, int)+288)(c6b7d03bf28ec19f3fdd4cd68a94a2bb)
#06 pc 0000000000040cbc /system/lib64/platformsdk/libace_napi.z.so(napi_call_function+352)(20e5f1576305d0c6fb1934f4bbe2d1f3)<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

请问这个错误是什么导致的?


更多关于HarmonyOS 鸿蒙Next napi_call_function 是否支持子线程的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

更多关于HarmonyOS 鸿蒙Next napi_call_function 是否支持子线程的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next napi_call_function 是否支持子线程

在HarmonyOS鸿蒙Next环境中,napi_call_function函数主要用于在非阻塞的JavaScript环境中调用JavaScript函数。关于该函数是否支持子线程,需要明确的是,napi_call_function本质上是一个与JavaScript执行环境紧密相关的API,它通常需要在主线程(即JavaScript引擎运行所在的线程)中调用。

在大多数JavaScript引擎和环境中,包括HarmonyOS鸿蒙Next,JavaScript的执行(包括函数调用)是线程绑定的,即它们需要在创建JavaScript执行环境的线程中执行。因此,如果尝试在子线程中直接调用napi_call_function,通常会导致错误或未定义行为。

为了在子线程中执行JavaScript函数,开发者通常需要使用消息传递机制,将需要执行的函数调用封装成消息,发送到主线程,并由主线程调用napi_call_function来执行。

综上所述,napi_call_function在HarmonyOS鸿蒙Next中不支持直接在子线程中调用。如果需要在子线程中处理与JavaScript相关的任务,请考虑使用上述的消息传递机制。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部