收藏
回答

频繁请求setData,应该怎么解决?

目前还没出任何问题,就怕上线了出问题。

几乎不能从需求上来砍,我要做的功能是从一段很长的string里面,每次取3个字符展示。

每次setData的数据,很少,只有三个汉字,但是请求的频率有300ms,用户不点暂停或者退出程序的话,会持续请求。

查了官方文档,对setData的频率说得有点模糊,我可以修改请求的频率,但也不能修改得太高了,这问题怎么解决呢?

最后一次编辑于  09-10  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

9 个回答

  • 周
    09-10

    你如果要做抽奖,

    你就不能先把那个所谓的长字符串先从里面随机取数做成数组吗?

    为了你,我写了个demo,自己运行吧

    https://developers.weixin.qq.com/s/VTub1hm47Mb7

    09-10
    赞同 1
    回复 3
    • 木木
      木木
      09-10
      太有心了!关注了!
      09-10
      回复
    • 木木
      木木
      09-10
      我刚才仔细看了代码,给我的惊喜太大了,主要是在写法本身,我知道新的es里函数可以用``,但除了log之外,我还是第一次见,还有赋值,我用局部变量都是 let _name = this.data.arr.name,没想到可以用const {},谢谢谢谢,真的非常感谢
      09-10
      回复
    • 周
      09-11回复木木
      不客气,这种写法不知道的话多看看react,很多高级js写法
      09-11
      回复
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    09-10

    那很长的字符串是一次性请求后台过来的?随机取3个连续的字?依次顺序显示?

    09-10
    赞同
    回复 3
    • 木木
      木木
      09-10
      是一次拿到的,不用重复请求去拿,不是随机取,是顺序去,比如“那很长的字符串是一次性请求后台过来的”,第一次取‘’那很长‘’,第二次取“的字符”
      09-10
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      09-11回复木木

      给你弄成了自定义组件

      https://developers.weixin.qq.com/s/ZKuqGimt79br

      09-11
      回复
    • 木木
      木木
      09-11回复o0o有脾气的酸奶
      谢谢!已关注了!
      09-11
      回复
  • ???
    ???
    09-10

    300ms一次还行吧

    如果是连续有规律的改变其实可以用css的过渡或者动画显示..

    09-10
    赞同
    回复 4
    • 木木
      木木
      09-10
      我之前没用过这两者,我先去了解下,如果还有什么疑惑,可能还会来打扰
      09-10
      回复
    • 木木
      木木
      09-10
      我找到一个小程序,名字叫【吃什么Lite】,能帮忙看一下吗,他的效果,和我想要达到的很像,而且它改变页面非常快,就是用你说的css过渡或者动画写的吗
      09-10
      回复
    • ???
      ???
      09-10回复木木
      它这个应该是随机的,一直在setData,这么简单的页面的话一直setData不会出什么问题。实在担心卡的话 可以像楼上说的那样写成自定义组件效果好些
      09-10
      回复
    • 木木
      木木
      09-10回复???
      我的页面其实和它的一样简单,好的,那我着手写了,非常谢谢
      09-10
      回复
  • 彡( ̄_ ̄;)彡
    彡( ̄_ ̄;)彡
    09-10
    1. 你可以把展示字符串的部分单独做成一个组件,在组件里持续使用setData

    2. 如果你是从已有字符串中取出3个连续排列在一起的字符串,你还可以利用css动画,遮罩处理一下


    09-10
    赞同
    回复 8
    • 木木
      木木
      09-10
      厉害,第二个方法可行,降低了setData的频率。但第一个我没太懂你的意思,组件里持续使用,和我直接持续使用,有什么区别吗
      09-10
      回复
    • 淳祖军
      淳祖军
      09-10回复木木
      组件的渲染机制和页面的渲染机制不太一样
      09-10
      回复
    • 木木
      木木
      09-10回复淳祖军
      可以简述一下吗,或者有文档吗
      09-10
      回复
    • 彡( ̄_ ̄;)彡
      彡( ̄_ ̄;)彡
      09-10回复淳祖军
      组件里持续调用setData,就像在page里面的局部更新一样,影响范围小些
      09-10
      回复
    • 彡( ̄_ ̄;)彡
      彡( ̄_ ̄;)彡
      09-10
      文档上好像有这方面的说明,另外工具初始简单项目,是一个计时器,也是这样干的
      09-10
      回复
    查看更多(3)
  • |G.XIAO|
    |G.XIAO|
    09-10

    如果有变化在setData,没有变化就不setData

    09-10
    赞同
    回复 1
    • 木木
      木木
      09-10
      就是要展现在页面上,除非有其他办法,展现在页面上,而不用setData
      09-10
      回复
  • ༺ 康 ༻
    ༺ 康 ༻
    09-10

    实在得有,也不能去掉

    09-10
    赞同
    回复 2
    • 木木
      木木
      09-10
      那就只能降低setData的频率了吗
      09-10
      回复
    • ༺ 康 ༻
      ༺ 康 ༻
      09-10回复木木
      09-10
      回复
  • ʚ青哥ɞ
    ʚ青哥ɞ
    09-10

    需求不能砍,只能做优化,提高频率呗。

    09-10
    赞同
    回复 1
    • 木木
      木木
      09-10
      这个不是效率的问题吧
      09-10
      回复
  • var 友原
    var 友原
    09-10

    这么频繁是要干嘛

    09-10
    赞同
    回复 5
    • 木木
      木木
      09-10
      需求就是这样,而且还不能避免
      09-10
      回复
    • var 友原
      var 友原
      09-10回复木木
      我的意思是你这么频繁setData是要展示什么
      09-10
      回复
    • 木木
      木木
      09-10回复var 友原
      快速阅读,也可以理解成一个点名器或者抽奖的,就全校同学的名字不断的滚动出现,我要很频繁的改变页面
      09-10
      回复
    • var 友原
      var 友原
      09-10回复木木
      就不能一次性把数据全部请求过来吗
      09-10
      回复
    • 木木
      木木
      09-10回复var 友原
      数据一直都是有的,一个大的string,每次我截取就行了,但问题是我每次只展示1个名字,这不是每次都要setData吗
      09-10
      回复
  • 鲤子
    鲤子
    09-10

    什么鬼

    09-10
    赞同
    回复 3
    • 木木
      木木
      09-10
      就,字面意思
      09-10
      回复
    • 鲤子
      鲤子
      09-10回复木木

      类似点名器?

      09-10
      回复
    • 木木
      木木
      09-10回复鲤子
      哦对,你这个描述合理
      09-10
      回复
问题标签