HarmonyOS Next中在Promise中执行while循环请求网络后只执行一次问题
有拉取服务端信箱消息,new Promise后启动while循环,等待网络请求,解析数据,如果解析数据后服务端还有数据只执行循环继续拉取,现在执行一次后下一次卡死不再执行了
03-25 15:51:14.469 15002-15027 C015b0/NetMgrSubsystem com.beike.sdk.im I NETSTACK [http_response.cpp 49] HEAD: HTTP/1.1 200 OK
03-25 15:51:14.470 15002-15027 C015b0/NetMgrSubsystem com.beike.sdk.im I NETSTACK [http_exec.cpp 336] priority = 1
03-25 15:51:15.359 15002-15008 C03f00/ArkCompiler com.beike.sdk.im I [gc] SmartGC: finish app cold start
03-25 15:51:15.528 15002-15039 C057c4/IPCThreadSkeleton com.beike.sdk.im W TlsDestructor 48: thread exit, flush commands
03-25 15:51:15.528 15002-15039 C057c4/IPCThreadSkeleton com.beike.sdk.im E ~IPCThreadSkeleton 85: IPCThreadSkeleton delete
03-25 15:51:26.359 15002-15006 C01305/Appkit com.beike.sdk.im I [appfreeze_inner.cpp(NotifyANR:204)]reportEvent:THREAD_BLOCK_3S, pid:15002, bundleName:com.beike.sdk.im. success
03-25 15:51:26.362 15002-15002 C03f00/MUSL-SIGCHAIN com.beike.sdk.im E signal_chain_handler call 0 rd sigchain action for signal: 35
03-25 15:51:26.362 15002-15002 C01305/Appkit com.beike.sdk.im I [mix_stack_dumper.cpp(Dump_SignalHandler:69)]Dump_SignalHandler.
03-25 15:51:26.362 15002-15002 C03f00/MUSL-SIGCHAIN com.beike.sdk.im E signal_chain_handler call 2 rd sigchain action for signal: 35
03-25 15:51:26.362 15002-15002 C02d11/DfxSignalHandler com.beike.sdk.im I DFX_SigchainHandler :: sig(35), pid(15002), tid(15002).
03-25 15:51:26.363 15002-15002 C02d11/DfxSignalHandler com.beike.sdk.im I DFX_SigchainHandler :: sig(35), pid(15002), processName(com.beike.sdk.im), threadName(om.beike.sdk.im).
03-25 15:51:26.363 15002-15002 C02d11/DfxSignalHandler com.beike.sdk.im I The clone thread(15078).
03-25 15:51:26.363 15002-15002 C02d11/DfxSignalHandler com.beike.sdk.im I Finish handle signal(35) in 15002:15002
03-25 15:51:26.363 15002-15002 C03f00/MUSL-SIGCHAIN com.beike.sdk.im E signal_chain_handler call 2 rd sigchain action for signal: 35 directly return
03-25 15:51:26.373 15002-15002 C02d11/DfxSignalHandler com.beike.sdk.im I (15078) wait processdump(15081) exit.
03-25 15:51:26.374 15002-15082 C057c1/IPCWorkThread com.beike.sdk.im I ThreadHandler 60: proto:0 policy:0 name:IPC_4_15082
03-25 15:51:26.422 15002-15002 C02d11/DfxSignalHandler com.beike.sdk.im I (15078) wait for (15081) return with ret(15081) status(0)
03-25 15:51:29.357 15002-15006 C01305/Appkit com.beike.sdk.im I [appfreeze_inner.cpp(NotifyANR:204)]reportEvent:THREAD_BLOCK_6S, pid:15002, bundleName:com.beike.sdk.im. success
03-25 15:51:29.358 15002-15006 C01304/AbilityManagerService com.beike.sdk.im E [app_recovery.cpp(ScheduleSaveAppState:172)]AppRecovery ScheduleSaveAppState. is not enabled
03-25 15:51:29.358 15002-15006 C01304/AbilityManagerService com.beike.sdk.im E [app_recovery.cpp(ScheduleRecoverApp:230)]AppRecovery ScheduleRecoverApp. is not enabled
03-25 15:51:29.358 15002-15002 C03f00/MUSL-SIGCHAIN com.beike.sdk.im E signal_chain_handler call 0 rd sigchain action for signal: 35
03-25 15:51:29.358 15002-15002 C01305/Appkit com.beike.sdk.im I [mix_stack_dumper.cpp(Dump_SignalHandler:69)]Dump_SignalHandler.
03-25 15:51:29.358 15002-15002 C03f00/MUSL-SIGCHAIN com.beike.sdk.im E signal_chain_handler call 2 rd sigchain action for signal: 35
03-25 15:51:29.358 15002-15002 C02d11/DfxSignalHandler com.beike.sdk.im I DFX_SigchainHandler :: sig(35), pid(15002), tid(15002).
03-25 15:51:29.359 15002-15002 C02d11/DfxSignalHandler com.beike.sdk.im I DFX_SigchainHandler :: sig(35), pid(15002), processName(com.beike.sdk.im), threadName(om.beike.sdk.im).
03-25 15:51:29.359 15002-15002 C02d11/DfxSignalHandler com.beike.sdk.im I Finish handle signal(35) in 15002:15002
03-25 15:51:29.359 15002-15002 C03f00/MUSL-SIGCHAIN com.beike.sdk.im E signal_chain_handler call 2 rd sigchain action for signal: 35 directly return
03-25 15:51:29.359 15002-15002 C02d11/DfxSignalHandler com.beike.sdk.im I The clone thread(15090).
03-25 15:51:29.367 15002-15002 C02d11/DfxSignalHandler com.beike.sdk.im I (15090) wait processdump(15093) exit.
03-25 15:51:29.408 15002-15002 C02d11/DfxSignalHandler com.beike.sdk.im I (15090) wait for (15093) return with ret(15093) status(0)
03-25 15:51:32.358 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
03-25 15:51:35.359 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
03-25 15:51:38.357 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
03-25 15:51:41.356 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
03-25 15:51:44.357 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
03-25 15:51:47.360 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
03-25 15:51:50.360 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
03-25 15:51:53.358 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
03-25 15:51:56.356 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
03-25 15:51:59.357 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
03-25 15:52:02.356 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
03-25 15:52:05.359 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
03-25 15:52:08.359 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
03-25 15:52:11.356 15002-15006 C01305/Appkit com.beike.sdk.im E [watchdog.cpp(Timer:126)]Watchdog timeout, wait for the handler to recover, and do not send event.
口味你好,看了你的问题,我觉得这个问题可能是由于Promise的执行机制导致的,解决这个问题的方法是使用递归调用替代while循环,确保Promise的结果返回后再继续下一次的拉取操作。