最近在学习小程序,写了个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方法后,是可以正常加载更多的。考虑原因应该是定时器导致数据超过了限制,但是不知道具体怎么修改。
希望各位大佬提供下解决思路,帮助小弟解决这个问题,三克油~
请问问题现在解决了吗
按商品分类倒计时,不用每个商品都倒计时。