原生平台, 刷屏报错resolveAfterPromiseResolved, 但是游戏功能又正常

引擎版本 3.8.3

不断的在报错resolveAfterPromiseResolved


有下面的一些特征:

  • web平台从来都没报过
  • 原生平台几乎在刷屏 (安卓/ios都是)
  • 从日志看起来, loading页面是没有报错的, 开始游戏之后才报的
  • 但是游戏又没有什么功能缺漏, 玩起来都十分正常

这段日志…裁掉头尾…从 21:10:05.14321:10:16.186

总共11秒, 关键字出现2530次

2530 / ((16.186 - 5.143) * 60) = 3.818...

平均每帧3.8次, 也不像是平均的

CPP报一次, JS报一次, 那再除以2, 再算上帧率不稳定, 取个58吧

2530 / ((16.186 - 5.143) * 58) / 2 = 1.975...

勉强看起来合理, 但是为什么每帧报2次呢?

然后按地址找了一下…js:1:198188就在这里…看起来是引擎的一个功能…

再翻查源码…应该就是这里吧…

CallbackTimerScheduler脚本的内部类
Scheduler主要在DirectorComponent被使用
这样查起来实在是太多了

但是为什么Web平台上又没问题呢…?

这个问题到底应该怎么查

我的拙见, 如果定位是 Scheduler类的话 , 有没有可能是哪里对this.schedule相关的定时器使用姿势不对

应该是有姿势不对, 但是游戏又没受到影响, 这就增加了排查的难度了 :upside_down_face:
而且为什么web上又没有姿势不对呢

看这个

非常强, 帖子里的意思是:
只要使用promise.race和promise.all或者多次resolve都会触发
看来我需要排查一下? 可是我的代码里非常多的async函数啊, 头疼
不知道是每次运行上述逻辑都会报一次, 还是出现过一次就一直报