做倒计时碰到一个问题

在我自己的项目里,耗时操作会影响倒计时的执行,导致时间计时会卡主,持续到耗时操作结束。

然后我就模拟了一下耗时操作对倒计时的影响:界面有个文本,每秒更新一下,log也会每秒输出一次,使用计时器来做的,然后在第7秒会去执行一个耗时操作,用循环来模拟的。

在执行耗时操作的瞬间,界面会卡主一会,等一会(大概1-2s)又正常更新了,但是log输出一直持续到循环结束才能正常打印。下面是代码截图:
WechatIMG108
下面是运行截图:
Xnip2023-11-15_11-15-28

cocos用的不多,这块代码不知道是不是不合理。按我的理解,我去执行耗时操作应该不影响计时器的正常执行才对。

截图放反了,凑合看 :rofl:

结果符合预期

抛开问题本身,我建议倒计时在update里面做

一开始是放在update里面,但是一想引擎都提供了这种倒计时功能,用update去实现,感觉不太优雅

其实是JS任务执行顺序导致的
可以参考这个文章 关于JS定时器(setTimeout / setInterval)定时不准问题及解决方案

是的,本质还是单线程执行,必然会产生等待堵塞