白羽
白羽
  • 发布:2020-05-23 01:41
  • 更新:2020-05-26 10:12
  • 阅读:3306

uniapp通过getBoundingClientRect和fields获取节点信息时,耗时太长,有什么优化方法吗?

分类:uni-app

uniapp获取节点边界信息,可以通过getBoundingClientRect和fields方法实现。但是实测发现,手机端通过这两个方法读取节点边界信息,每次的耗时,可以达到90ms~130ms(MIX2测试数据);如果是RedMI 5,甚至可能多达200ms~250ms。
这在大多数场景下,是可以接受的,没有任何问题。

但在这在某些特定场景下,比如需要连续读取3~5次时,延迟就可能累计达到1秒。这个耗时量太大,无法接受。

请问官方和社区的朋友们,对于这个问题,有优化的办法吗?急!

----------补充说明-----------
特别说明一下,以免引起误解。getBoundingClientRect和fields本身是没有问题的,没有bug。只是由于CPU性能的差异,它在PC端的耗时很短,约10ms;而在手机端的耗时较长,可能达到90~130ms。

本贴不是找bug,而是想请教解决/优化这个问题(在手机端耗时过大)的办法。先谢谢大家了!

2020-05-23 01:41 负责人:DCloud_UNI_FXY 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

连续请求getBoundingClientRect是要实现什么功能?是否可以通过uni.createIntersectionObserver变通实现?
https://uniapp.dcloud.io/api/ui/intersection-observer?id=createintersectionobserver

该问题目前已经被锁定, 无法添加新回复