收藏
回答

页面生命周期钩子、PerformanceObserver 监听,数据可采集顺序确认的?

通过打日志查看,在打开一个页面,并且页面首次渲染完成时:页面生命周期钩子(onLoad, onShow, onReady)都触发完后,通过 PerformanceObserver 监听方式的回调才触发。即,数据可采集的顺序为:

  1. page.onLoad
  2. page.onShow
  3. page.onReady
  4. performance 的 route
  5. performance 的 evaluateScript
  6. performance 的 firstRender

疑问:

  1. performance 的evaluateScript 代码注入阶段(记为A)、page.onReady 首次渲染完成(记为B),实际发生顺序是 A ➜ B,但真实数据获可采集顺序却是 B ➜ A,这个是什么原因?
  2. 两者可采集顺序是固定的吗?
回答关注问题邀请回答
收藏

1 个回答

  • Cjiang
    Cjiang
    2022-02-17

    PerformanceObserver 的监听会有延迟,不保证和生命周期有时序关系

    2022-02-17
    有用 1
    回复 10
    • 弦千
      弦千
      2022-02-17
      感谢答复。
      页面的生命周期和可采集顺序都是确定的:onLoad ➜ onShow ➜ onReady.


      那么,PerformanceObserver 的监听中,route、evaluateScript、firstRender 这三者,有类似的先后顺序吗?如果有,是怎么样的?
      2022-02-17
      回复
    • Cjiang
      Cjiang
      2022-02-18回复弦千
      evaluateScript在前,route和 firstRender有多线程的原因,不保证顺序
      2022-02-18
      1
      回复
    • 弦千
      弦千
      2022-02-18回复Cjiang
      收到
      2022-02-18
      回复
    • 弦千
      弦千
      2022-02-18
      补充问下,依次打开 A、B 两个页面。通过 PerformanceObserver 进行监听,是可以保证 A 页面的性能指标先被触发(即采集到),对吧?
      2022-02-18
      回复
    • 弦千
      弦千
      2022-02-18回复弦千
      即可采集顺序上,PageA.m1, PageA.m2, ..., Page.mn 可采集,然后 PageB.m1, PageB.m2, ..., PageB.mn 可采集。而不会出现 PageA.m1, PageB.m1, PageA.m2
      2022-02-18
      回复
    查看更多(5)
登录 后发表内容