收藏
回答

关于nextTick“下个时间片”是指逻辑层的“下个时间片”还是指等渲染层渲染完的“下个时间片”?

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.nextTick 工具 7.0.0 2.10.0

https://developers.weixin.qq.com/miniprogram/dev/api/ui/custom-component/wx.nextTick.html

关于nextTick“下个时间片”是指逻辑层的“下个时间片”还是指等渲染层渲染完的“下个时间片”?

看小程序架构是分为逻辑层和渲染层,两个线程执行的,比如说一个方法里通过setData使页面需要大量时间渲染,这时候nextTick是会等页面渲染完再执行还是当当前函数执行完就执行(不考虑其他异步事件问题)

例如:

foo(){
  setData({
    ...
  })  //  修改数据导致页面开始大量渲染
  wx.nextTick(()=>console.log('nextTick')) // 这个nextTick是在页面渲染完前执行还是渲染完成后执行?
 }
回答关注问题邀请回答
收藏

3 个回答

  • 团团呗
    团团呗
    2020-04-21

    你在 setData完成回调里测试一下就知道了

    2020-04-21
    有用 1
    回复 1
    • 团团呗
      团团呗
      2020-04-21
      2020-04-21
      回复
  • August
    August
    2021-01-05

    逻辑层的下一个时间片,基本等于 setTimeout 0。

    setData 的回调函数会经历更多的步骤(发送更新任务到视图层、视图层完成数据与视图的更新、视图层通知逻辑层已完成)后才会触发。

    如果单次设置的数据量比较多,引发的视图层更替任务“较多”,那么 setData 中的回调函数触发会明显晚于 nextTick 的触发。

    2021-01-05
    有用
    回复 1
    • 乘风破浪
      乘风破浪
      2022-02-14
      上面团团呗的测试,setData设置一个值,setData 中的回调函数触发都晚于 nextTick 的触发。
      2022-02-14
      回复
  • Tusi
    Tusi
    2020-11-27

    确实说的太简单了,能不能具体点

    2020-11-27
    有用
    回复
登录 后发表内容
问题标签