var time = 20;    var timer = setInterval(function () {
      time = time - 1;
      that.setData({
        CountDown: time
      });
      console.log(time);
      if (time == 10) {
        clearInterval(timer );
        wx.redirectTo({
          url: './game',
        });

      }
    }, 1000);

正常情况下页面刷新之后正在执行的计时器会被清除,可是在小程序当中并不是这样,即使执行了redirectTo关闭了当前页面到一个新页面,直到达到清除的条件之前(此例是time == 10),老页面的计时器仍旧不会被清除,仍旧继续执行。

网友通过将timer添加到data中,通过以下方法获得setInterval返回值,并在onload的时候清楚上一个页面的计时器,这种做法是错误的,因为此时的this已是一个新的页面,再通过this.data.timer的方法是获取不到上一个页面的计时器id的。每次开始打印的都是

start:10000是达不到启动页面就能清除上一个页面的计时器的效果的。
  data: {
    timer: 10000
  }, 

onLoad: function(options) {
    var that = this;
    clearInterval(that.data.timer);
    console.log("start:" + that.data.timer );
    var time = 20;
    that.data.timer = setInterval(function () {
      time = time - 1;
      that.setData({
        CountDown: time
      });
      console.log(time);
      if (time == 10) {
        clearInterval(that.data.timer );
        wx.redirectTo({
          url: './game',
        });

      }
    }, 1000);
    console.log("end:" + that.data.timer);*/

  }

解决方法:redirectTo提供了接口调用成功或完成之后的success、complete的回调方法,只要在这里写clearInterval就能在跳转之前清除设置的interval了,在这里为便于其他的函数也能获取到当前页面的计时器进行清除,我们仍旧将timer设置到data中

  data: {
    timer: 10000
  }, 

onLoad: function(options) {
    var that = this;
    clearInterval(that.data.timer);
    console.log("start:" + that.data.timer );
    var time = 20;
    that.data.timer = setInterval(function () {
      time = time - 1;
      that.setData({
        CountDown: time
      });
      console.log(time);
      if (time == 10) {
        clearInterval(that.data.timer );
        wx.redirectTo({
          url: './game',
       success: function() {
        clearInterval(that.data.timer);
        }
        });

      }
    }, 1000);
    console.log("end:" + that.data.timer);*/

  }

最新文章

  1. Android的RecyclerView
  2. Android服务开机自启动
  3. 对react的几点质疑
  4. Liferay 6.2 改造系列之二十三:修改Liferay原始主题中"技术支持:Liferay"字样
  5. [bzoj1452][JSOI2009]Count(树状数组)
  6. Android自动化测试框架对比
  7. linux笔记_磁盘分区
  8. Idea基本设置
  9. 发布项目MVC4-EF6.0出错
  10. 由于 UNION ALL Chinese_PRC_CI_AS”之间的排序规则冲突,值的排序规则未经解析
  11. Android开发之下载Tomcat服务器的文件到模拟器的SD卡
  12. 开始编写寄几的 CSS 基础库
  13. 【Python】 python对象的文件化 pickle
  14. 阿里移动云专场专题.md
  15. Ajax请求的几个小练习
  16. CrackMe-005全破详解(图文+源码)--上篇
  17. html template--(来自网易)
  18. 【汇总】PHP-FPM 配置优化(转)
  19. (转)Linux下的输入/输出重定向
  20. zw版【转发·台湾nvp系列Delphi例程】HALCON BitXor

热门文章

  1. redux VS mobx (装饰器配合使用)
  2. js:获得时间
  3. 微软在GitHub上开放源代码
  4. ubuntu 14.04 anaconda安装
  5. Mongodb 的学习
  6. 基于vue + axios + lrz.js 微信端图片压缩上传
  7. SpringMvc 面向切面1
  8. FPGA开发流程
  9. [译]GLUT教程 - 移动镜头1
  10. Oracle集群和灾备解决方案介绍