欢迎来到258分享网,纯净的网络源码分享基地!

258资源分享网

全部作品
全部作品
网站源码
微信源码
素材特效
源码插件
视频教程
建站学院
热门搜索: 织梦  农业种植  农业  安全设置  官方
258资源分享 > 建站学院 > 微信开发 > 小程序倒计时深究

推荐下载

HTML5响应式自适应网咯设计

2020-05-12   浏览:740

高端HTML5响应式企业通用网

2020-05-06   浏览:521

html5响应式外贸网站英文版

2020-05-08   浏览:510

HTML5自适应律师工作室类网

2020-04-04   浏览:504

HTML5影视传媒文化公司类网

2020-05-12   浏览:501

小程序倒计时深究

发布时间:2020-09-29  

小程序倒计时重叠抖动问题

因为请求数据写在onShow 函数里面,所以每次切换界面都会刷新,这就会导致,如果当前 定时器在跑的话,再次刷新会再次常见定时, 那么就会导致刷新几次有几个定时器,同时在跑,那么前端界面显示的计时数字 就会不时跳动,所以需要保证在跑的定时器只有一个。将定时器对象创建为全局的,在每次开启定时器的时候先清空之前的定时器。就可以解决刷新后计时闪动的问题了,或者在在tab页面,运用 onHide 周期 进行 clearTimeInterval清空 , 在 非tab页面,运用onUload() 周期 进行 clearTimeInterval清空,百度都可以找到类似解决方案,其中在我的历史文章小程序实战踩坑之B2B商城项目总结也有总结,代码类似如下:

 

/**

   * 清除interval

  * @param that

  */

 clearTimeInterval: function (that) {

    var interval = that.data.interval;

    clearInterval(interval)

  },

 

 /**

   * 生命周期函数--监听页面卸载

   * 退出本页面时停止计时器

  */

 onUnload:function () {

      var that = this;

      that.clearTimeInterval(that)

 },

 

 /**

   * 生命周期函数--监听页面隐藏

   * 在后台运行时停止计时器

  */

 onHide:function () {

      var that = this;

      that.clearTimeInterval(that)

 }

倒计时使用setInterval或setTimeout触摸屏幕导致时间显示的突跳,突慢问题,卡顿,甚至停止

不信的同学,可以尝试用手指触摸屏幕,上下小幅上下移动不放,你会发觉时间竟然停止了。(特别是针对低端机型)

 

通常同学写代码都会如此:

 

                let self = this;

                let lefttimeSec = time - new Date().getTime();

                let calc = setInterval(function() {

                    lefttimeSec -= 1000;

                    self.endtimestr = '距离拼单结束还有' + self.dateformat(lefttimeSec);

                    self.$apply();

                    if (lefttimeSec <= 0) {

                        clearInterval(calc);

                    }

                }, 1000);

使用setInterval后,即使用了上面说的“小程序倒计时重叠抖动问题”解决方案,只是解决了倒计时重叠问题,这样写法,会导致的一些精准度不高。其实很简单,解决代码如下:

 

                showCountTime(time){

                    let self = this;

                    setTimeout(function(){

                        let lefttimeSec = time - new Date().getTime();

                        lefttimeSec -= 1000;

                        self.endtimestr = '距离拼单结束还有' + self.dateformat(lefttimeSec);

                        self.$apply();

                        self.showCountTime(time);

                    },1000);

                }

注意,这里用了setTimeout,要tab页面,运用onHide周期进行clearTimeout清空, 在非tab页面,运用onUload()周期 进行clearTimeout清空定时器。这步必须要做,就不多说了,要不还是会出现上面说的“小程序倒计时重叠抖动问题”问题。

 

用了上面代码,补失的精准度不足。小心的测试同学会发现触摸屏幕导致的突跳,突慢问题,甚至停止!于是各种寻思,去找了拼多多小程序,京东购物小程序各种对比。 结论是拼多多存在和我一样的问题,京东购物小程序的倒计时没这样的问题,给个赞!

 

出现问题环境描述:

 

小程序框架:wepy : "^1.7.2"

测试机型:红米3

本文标签

: