收藏
评论

clearInterval在部分Android机无法清除setInterval

有没有遇到类似问题的朋友

最后一次编辑于  2018-12-06  (未经腾讯允许,不得转载)
收藏赞 0

3 个评论

  • 是柿子啊
    是柿子啊
    2018-12-06

    提供一下出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2018-12-06
    赞同
    回复
  • Gabriella
    Gabriella
    01-15

    我是ios不支持,clearInterval(timer)失败

    01-15
    赞同
    回复 3
    • 小东哥
      小东哥
      01-15

      这个问题我已经找到了大概的原因,计时器设置的频率较低会导致无法清除,在低端安卓机无法那么快的渲染视图导致;;;IOS清除不掉可能是你自己写得有问题

      01-15
      回复
    • Gabriella
      Gabriella
      01-15回复小东哥

      嗯嗯,是的,发现是我代码的问题

      01-15
      回复
    • Focus
      Focus
      07-17回复Gabriella
      请问你是什么问题,我现在开发者工具上onhide和onunload都执行了clearInterval(this.data.timer);但是依然清除不了
      07-17
      回复
  • MCC
    MCC
    2018-12-07

    可以用 setTimeout 代替  setInterval  setTimeout可以清除掉



    // 倒计时

    goodstimer: null,

    getremainingtime(time) {

        let that = this;

        that.goodstimer = setTimeout(function () {

            if (time <= 0) {

                that.setData({

                    hours: '00',

                    minutes: '00',

                    seconds: '00',

                });

            clearTimeout(that.goodstimer);

            } else {

                time = time - 1;

                that.setData({

                    hours: parseInt(time / 60 / 60) >= 10 ? parseInt(time / 60 / 60) : '0' + parseInt(time / 60 / 60),

                    minutes: parseInt(time / 60 % 60) >= 10 ? parseInt(time / 60 % 60) : '0' + parseInt(time / 60 % 60),

                    seconds: parseInt(time % 60) >= 10 ? parseInt(time % 60) : '0' + parseInt(time % 60),

                });

                }

            if (that.goodstimer) {

                that.getremainingtime(time)

            }

        }, 1000)

    },




    2018-12-07
    赞同
    回复