小程序坑 redirectTo 计时器 setInterval clearInterval
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',
});
}
}, 1000);
console.log("end:" + that.data.timer);*/
}
小程序坑 redirectTo 计时器 setInterval clearInterval的更多相关文章
- 详解封装微信小程序组件及小程序坑(附带解决方案)
一.序 上一篇介绍了如何从零开发微信小程序,博客园审核变智障了,每次代码都不算篇幅,好好滴一篇原创,不到3分钟从首页移出来了.这篇介绍一下组件封装和我的踩坑历程. 二.封装微信小程序可复用组件 首先模 ...
- 微信小程序navigateTo /redirectTo/navigateBack 三者区别
navigateTo 不会将旧页面出栈: redirectTo 会将旧页面出栈,再将需要跳转到的页面入栈: navigateBack 则是将页面栈最后一个元素出栈,因此倒数第二个元素会成为最后一个元素 ...
- 微信小程序 功能函数 计时器
let lovetime = setInterval(function () { let str = '(' + n + ')' + '重新获取' that.setData({ getText2: s ...
- 小程序坑之 swiper组件
表现:swiper 内容 空白 原因:swiper组件的current值为n时,重新刷新页面,current值不变,当刷新后的swiper item的数量少于 n 时,swpier找不到对应的item ...
- 微信小程序-坑1-await-async
VM45:1 thirdScriptError sdk uncaught third Error regeneratorRuntime is not defined ReferenceError: r ...
- 微信小程序-坑,wxml里wx:if 判断 数字 是否在一个数组中。
<view wx:if="{{item.index}} in {{vote_list}}"> 已赞 <image src="/static/zan_y. ...
- 微信小程序开发 (资料汇总,谁还没被坑过?希望助你绕过一些坑)
最近帮人家做一个微信小程序,刚好想熟悉一下.由于牵扯到多用户使用系统,以及数据共享,所以自然架构选择了,客户端和服务器的方式. 后台服务器是windows server,后台程序是.Net WebA ...
- 原创+转发:微信小程序navigator、redirectTo、switchTab几种页面跳转方式
什么是事件? 事件是视图层到逻辑层的通讯方式. 事件可以将用户的行为反馈到逻辑层进行处理. 详解(以常见的tap点击事情为例) 模板.wxml代码: <view id="tapTest ...
- 微信小程序开发踩坑记
前言 微信小程序自去年公测以来,我司也申请了一个帐号开发,春节前后开始开发,现在终于告一个段落了.谨以此文记录下踩过的坑. 坑1:scroll-view与onPullDownRefresh冲突 由于有 ...
随机推荐
- 如何手动编译运行带包 java 程序
带包的java程序比普通java程序的编译稍微复杂一些.例如下面的例子: package cn.guopeng; import java.util.*; public class hello { pu ...
- Github上的PHP开源资源汇总
依赖管理 ——用于依赖管理的包和框架 Composer/Packagist : 一个包和依赖管理器 Composer Installers: 一个多框架Composer库安装器 Pickle: 可以 ...
- ASP.NET CORE RAZOR :向 Razor 页面添加验证
https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/razor-pages/validation 本部分中向 Movie 模型添加了验证逻辑. ...
- Excel中判断一个表中的某一列的数据在另一列中是否存在
A B C D 1 10 3 有 2 6 e 无 3 3 6 有 判断c列的值在A列中是否存在(假定C列为需要判断列,A列为目标列) 在D1中输入以下公式,然后下拉公式即可 =IF(C ...
- cadence allegro pcb模块设计复用
cadence allegro pcb模块设计复用 转载▼ 标签: 复用 模块 原理图 元件 文件 杂谈 分类: PCB技术 在你遇到如上图所示的dsp阵列PCB时,如果你的layout软件支持模块复 ...
- sublime 插件篇
添加插件 进入https://packagecontrol.io/installation 找到 或者 直接复制 import urllib.request,os,hashlib; h = '6f ...
- 利用Bootstrap简单实现一个文件上传进度条
© 版权声明:本文为博主原创文章,转载请注明出处 说明: 1. 使用commons-fileupload.jar实现文件上传及进度监听 2. 使用bootstrap的进度条进行页面显示 3. 因为进度 ...
- POJ 1731 Orders(STL运用)
题目地址:POJ 1731 这题能够直接用STL函数做,非常轻松..next_permutation函数非常给力.. 代码例如以下: #include <algorithm> #inclu ...
- android studio改动module名称
新建一个android studio项目,默认Module名称是app 右键app选择Rename,或者Shift + F6也能够.重命名module名称 重命名为abc之后中,如图上面箭头所指的ap ...
- 局域网简单的SVN服务器的搭建
最近组织在做一个比较大的项目,需要多人参与配合,经常会对项目文件增删查改,因此使用了SVN作为项目管理工具.但大家都很"盲",所以搭建SVN服务器的任务就落在了我这 ...