收藏
回答

在定时函数中 多次执行setData改变样式 页面不及时刷新

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug setData 客户端 最新 最新

最近做一个歌词滚动的功能,要求同一行歌词,不同的文字渐变颜色时有不同的速度。


我使用是setInterval 不断的setData 去更改数据从而达到动态的更改样式的效果,在模拟器上完美运行。


在真机不滚动歌词的情况下没问题,但是一旦滚动歌词(scroll-view)然后不动 。这时渐变就不渲染。


然后继续不停的滚动歌词就可以按正常的渲染执行了


执行一会就报了一个警告:[Violation] 'setInterval' handler took 70ms


有哪位大佬知道这是为什么呢 ,官方大佬请出来说两句, 在线等急。。。。。。



最后一次编辑于  02-13  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

7 个回答

  • Maverick
    Maverick
    02-14

    这种方式就算实现了性能也很差,建议用canvas。

    实在要用这种方式的话,可以用css animation实现渐变,setData控制每行的class和animation-duration;也能把setData的频率降低到每行一次。

    02-14
    赞同 1
    回复
  • 生如夏花
    生如夏花
    02-13

    来人啊,有哪位大神出来解答了,我重重有赏。

    02-13
    赞同
    回复 8
    • 
      
      02-13

      赏多少

      02-13
      回复
    • 生如夏花
      生如夏花
      02-13回复

      钱不是问题,你开个价,加我 微信 DSB945LZX

      02-13
      回复
    • 
      
      02-13
      1. tip: 请勿在 scroll-view 中使用 textareamapcanvasvideo 组件

      看下是不是这个问题,你这个代码都没有看很难分析问题啊

      02-13
      回复
    • 生如夏花
      生如夏花
      02-13回复

      没有啊 我把代码贴出了吧

      02-13
      回复
    • 生如夏花
      生如夏花
      02-13


      02-13
      回复
    查看更多(3)
  • 你吼那么大声干什么
    你吼那么大声干什么
    02-13

    setData是一个异步的操作,此外https://developers.weixin.qq.com/miniprogram/dev/framework/performance/tips.html?search-key=%E4%BC%98%E5%8C%96

    02-13
    赞同
    回复 4
    • 生如夏花
      生如夏花
      02-13

      感觉只能通过setData来满足这种需求,有什么更好的方法嘛。

      02-13
      回复
    • 你吼那么大声干什么
      你吼那么大声干什么
      02-13回复生如夏花

      我也不会,哈哈

      02-13
      回复
    • 生如夏花
      生如夏花
      02-13回复你吼那么大声干什么

      哈哈 多谢了

      02-13
      回复
    • 生如夏花
      生如夏花
      02-13

      官方呢

      02-13
      回复
  • xcf
    xcf
    02-15

    能发个代码片段看看么,滚动时无法渲染是由于webview在滚动时对内容渲染做的限制。而你的setData没有停止,所以出现无法继续渲染的问题。可以在滚动时终止setData,滚动结束后重新计算需要渲染的位置继续开始setData

    02-15
    赞同
    回复
  • ꯭想꯭得꯭美꯭。
    ꯭想꯭得꯭美꯭。
    02-15

    官方不建议频繁调用setData

    02-15
    赞同
    回复
  • 瑕不掩瑜
    瑕不掩瑜
    02-16

    我遇到的是滚动页面到相关标题,吸顶导航对应的标题显红色,用了setData来渲染改变样式,由于滑动速度太快,总是出现延迟,一直找不到好的方法

    02-16
    赞同
    回复
  • 你的微笑
    你的微笑
    02-16

    在你的JSON配置文件中加入这行代码试试:

      "usingComponents": {}


    02-16
    赞同
    回复