倒计时和下拉加载更多导致小程序卡死问题,怎么解决?
发布于 6 年前 作者 weilin 14357 次浏览 来自 官方Issues

最近在学习小程序,写了个demo,是商品列表展示页面,每个商品都有一个活动的倒计时效果,同时页面支持下拉加载更多。

我的写法是取回数据之后,正常展示商品,然后遍历商品列表,将各个商品的倒计时(同一方法实现)放到一个对象里,然后在wxml里根据sku取出对应的时间进行展示。

简单代码如下:

//goodsList为商品列表
goodsList.map((item)=>{
          if(!item.isad){
              const listId = item.id;
              //先加载一次,否则会时间位置出现短暂空白
              changeTime(listId, item)
              setInterval(function(){
                  changeTime(listId, item)
              }, 1000)
          }
      })
      //修改时间大对象,listTime为所有商品倒计时时间对象,show.showTimes是格式化时间方法
      function changeTime(listId, item){
          timeObjNew[listId] = show.showTimes(item.startTime, item.endTime)
          _this.setData({
              listTime: timeObjNew
          })

      }

然后在每次翻页加载更多时调用上面方法,开始几页是没问题的,但是到第8页之后就会出现页面卡死的问题,当注释掉setInterval方法后,是可以正常加载更多的。考虑原因应该是定时器导致数据超过了限制,但是不知道具体怎么修改。

希望各位大佬提供下解决思路,帮助小弟解决这个问题,三克油~

2 回复

请问问题现在解决了吗

按商品分类倒计时,不用每个商品都倒计时。

回到顶部