博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小程序坑 redirectTo 计时器 setInterval clearInterval
阅读量:6229 次
发布时间:2019-06-21

本文共 1859 字,大约阅读时间需要 6 分钟。

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);*/  }

 

转载于:https://www.cnblogs.com/znsongshu/p/9420151.html

你可能感兴趣的文章
【VMware虚拟化解决方案】构建VMware私有云 实现ITaaS
查看>>
每天一个linux命令-mkdir
查看>>
四天精通shell编程(二)
查看>>
Linux 学习笔记_8_进程管理_2_进程管理命令
查看>>
python3中实现客户端与服务端交互发送文件
查看>>
Centos yum异常问题
查看>>
标签制作软件中如何导出标签模板为PDF文件?
查看>>
时间戳
查看>>
Jenkins的安装过程(Windows)
查看>>
程序员面试-程序设计基本概念(1)
查看>>
性能测试、负载测试、压力测试的区别
查看>>
html iframe高度自适应
查看>>
Flash Stage3D 在2D UI 界面上显示3D模型问题完美解决
查看>>
nginx日志相关的查询
查看>>
浅谈回归Regression(一)
查看>>
使用Openfiler搭建ISCSI网络存储
查看>>
使用组策略配置域中计算机注册表安全
查看>>
SqlServer 数据库镜像 随笔
查看>>
[局域网共享批处理文件]局域网共享时看不到工作组计算机的
查看>>
Unix整理笔记-超级无敌常用命令杂谈2-里程碑M7
查看>>