收藏
回答

定时器刷新问题?

time: function () {
    var that = this;
    // 创建并保存定时器name
    that.data.timer = setTimeout(function () {
      
      if(second <= 0){
        //清除计时器
        clearTimeout(that.data.timer);
      }
      //second是设置的倒计时值,secondshow是要展示的key
      that.setData({
        secondshow: second--
      })
     
      if(second == 0){
          that.jisuan();
      }else{
        if(second > 0){
        that.time();
        }
    }
    }, 1000)
     
  },

我在小程序中设置了一个定时器,每秒刷新一次,对一个值进行自减;

在电脑上上显示没问题,每秒减一,但是在手机上预览时每次减2;

求大佬指导;

最后一次编辑于  2019-11-06
回答关注问题邀请回答
收藏

5 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-11-06

    time(){

        var that = this

        let second = 10, handle = 0, loop

        (loop = () => {

            handle = setTimeout(function () {

                if (handle) {

                    //清除计时器

                    clearTimeout(handle)

                    handle = 0

                }

                that.setData({

                    secondshow: second--

                })

                

                if (second <= 0) {

                    clearTimeout(handle)

                    handle = 0

                    that.jisuan()

                } else {

                    loop()

                }

            }, 1000)

        })()

    }


    2019-11-06
    有用
    回复
  • 。。。。。。
    。。。。。。
    2019-11-06

    在time函数里先执行清除定时器

    time: function () {
        var that = this;
        if (that.data.timer) {
            clearTimeout(that.data.timer)

        }

       ...........

        // 创建并保存定时器name     
      },


    2019-11-06
    有用
    回复 2
    • 烧饼
      烧饼
      2019-11-06
      感谢过来,问题已解决,
      2019-11-06
      回复
    • 墨染的天空
      墨染的天空
      2019-11-06
      你这种写法不对吧,循环time方法时,每次都会先清除定时器,再创建,如此反复。
      2019-11-06
      回复
  • 睡前原谅一切
    睡前原谅一切
    2019-11-06

    https://developers.weixin.qq.com/s/8801NymG7Jcr  试下

    2019-11-06
    有用
    回复 2
    • 烧饼
      烧饼
      2019-11-06
      成了, 把second--换成了-=1;谢谢大佬
      2019-11-06
      回复
    • 睡前原谅一切
      睡前原谅一切
      2019-11-06回复烧饼
      好的。记得页面卸载和隐藏的时候清除定时器哈。我写定时器一直用的 setInterval 。setTimeout 我写延迟调用或加载用的。。
      2019-11-06
      回复
  • 子不语
    子不语
    2019-11-06

    上代码吧

    2019-11-06
    有用
    回复 1
    • 烧饼
      烧饼
      2019-11-06
      感谢,代码片段不会搞,已经解决了
      2019-11-06
      回复
  • 墨染的天空
    墨染的天空
    2019-11-06

    上代码吧

    2019-11-06
    有用
    回复 3
    • 烧饼
      烧饼
      2019-11-06
      2019-11-06
      回复
    • 烧饼
      烧饼
      2019-11-06回复烧饼
      感谢过来,问题已解决
      2019-11-06
      回复
    • 墨染的天空
      墨染的天空
      2019-11-06回复烧饼
      2019-11-06
      回复
登录 后发表内容
问题标签