微信小程序页面跳转后js定时器没有销毁的问题
现在有一个小程序,对页面数据的实时性很强,本来想用socket,仔细研究了一下,万剑不离其中,它是websocket。服务端不会用,所以使用了传统的http请求方式。开发微信小程序必须要知道的事
1.请先看官方文档
https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/route.html
说明:官方文档的路由触发方式对页面生命周期的影响。如图:

在项目过程中,服务端不开心的说,你怎么一直请求我,我服务都反应不过来快崩溃了。经过控制台仔细查看发现,只要打开过的小程序页面的定时器都在不间断的运行着,这是为什么?
后来研究发现,微信小程序为什么会有页面生命周期这个概念,因为它和我们传统的web浏览器切换页面的机制是不同的。小程序的页面切换,是页面的显示和隐藏,只有没有启动过的页面才会进行初始化onLoad()。
明白了,页面跳转后,隐藏了页面,但是依然后台运行着。为了减轻服务端的请求压力,必须保证不展示页面的数据,停止刷新。具体操作请查看如下代码:
主要实现在js文件中
var obj=wx.createSelectorQuery();
var config = require('../../config.js');
var app = getApp();
Page({
data: {
timerTask:''//本页面的定时任务,要在这里声明定时器的变量名
,title: '工作面'
,listRy: {'bianhao': '0','xingming': '0','dangqianquduan': '0','daodashike': '0','banci': '0','jibie': '0','bumen': '0'}
,listXz: [
{'bianh': '0','machineid': '0','detectorid': '0','xtime': '0','quduanming': '0'},
{'bianh': '0','machineid': '0','detectorid': '0','xtime': '0','quduanming': '0'},
{'bianh': '0','machineid': '0','detectorid': '0','xtime': '0','quduanming': '0'},
]
},
onReady:function(res) {
// 页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
},
onLoad: function (e) {
var title = e.title
var that = this
wx.setNavigationBarTitle({
title: title
});
},
onShow: function () {
var that = this;
var id = e.id
//页面加载成功后,要先请求一次数据,否则会在定时时间到达时才会请求数据
search_data(that, id);
//将定时器赋值给data中的timerTask变量,便于关闭定时器调用
that.setData({
timerTask: setInterval(function () {
search_data(that, id);
}, config.timeOut)
})
},
onHide: function () {
//写在onHide()中,切换页面或者切换底部菜单栏时关闭定时器。
clearInterval(this.data.timerTask);
},
qiehuan_click: function(e) {
this.setData({
select:e.target.dataset.num
})
},
})
function search_data(that,id){
wx.request({
url: config.service.host
, method: 'post'
, data: {'query': 'gzm','bianh': id}
, header: {
'content-type': 'application/x-www-form-urlencoded' // 默认值
}
, dataType: 'json'
, success: function (re) {
console.log(re)
if (re.statusCode==200){
//这里是成功后的操作
}
}
})
}
来源:https://blog.csdn.net/weixin_42799222/article/details/86528216
微信小程序页面跳转后js定时器没有销毁的问题的更多相关文章
- 微信小程序-页面跳转与参数传递
QQ讨论群:785071190 微信小程序页面跳转方式有很多种,可以像HTML中a标签一样添加标签进行跳转,也可以通过js中方法进行跳转. navigator标签跳转 <view class=& ...
- 微信小程序页面跳转方法总结
微信小程序页面跳转目前有以下方法(不全面的欢迎补充): 1. 利用小程序提供的 API 跳转: // 保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面.// 注 ...
- 微信小程序页面跳转导航wx.navigateTo和wx.redirectTo
}) wx.redirectTo(OBJECT) 关闭当前页面,跳转到应用内的某个页面. 还是用上面的三张图示作为例子,当使用wx.redirctTo接口跳转页面时,原来的页面将被删除掉,当然,这是小 ...
- 微信小程序——页面跳转及传参
小程序页面跳转 微信小程序的页面跳转依然是以传统的请求转发和请求重定向为主,tabbar的存在,有TAB页面的跳转. 为了微信小程序的简介方便,规定页面路径只能是十层,应尽量避免过多的交互方式. 1. ...
- [转] 微信小程序 页面跳转 传递参数
本文转自:http://blog.csdn.net/qq_31383345/article/details/52795212 微信小程序的页面跳转,页面之间传递参数笔记. CSDN微信小程序开发专栏, ...
- 微信小程序页面跳转方法汇总
微信小程序前端页面跳转有多种方式,汇总如下: Tips: 小程序前端的页面跳转之后,跳转之前的页面并不会凭空消失,而是存进了一个类似“页面栈”的空间里: 只有当这个所谓的“页面栈”满了之后页面才会退出 ...
- 直击--vue项目微信小程序页面跳转web-view不刷新-根源
背景 最近项目需要适配小程序,项目是使用了vue开发的网站,其中改造方式是,每个页面都使用小程序创建一个页面通过web-view来显示指定页面的. 在没有使用小程序时,路由跳转时,刷新页面等等,这个是 ...
- 微信小程序页面跳转的三种方式总结
原文链接 https://blog.csdn.net/zgmu/article/details/72123329 首先我们了解到,小程序规定页面路径只能有五层,所以我们尽量避免多层级的页面跳转 页面跳 ...
- 微信小程序页面跳转 的几种方式
最近在做微信小程序,碰到页面跳转的问题,总结一下页面之间跳转的方式 一.wx.navigateTo(OBJECT) 这是最普遍的一种跳转方式,其官方解释为:“保留当前页面,跳转到应用内的某个页面” 类 ...
随机推荐
- 【BZOJ5071】[Lydsy十月月赛]小A的数字 发现性质
[BZOJ5071][Lydsy十月月赛]小A的数字 题解:一般遇到这种奇奇怪怪的操作,常用的套路是将原序列差分一下,或者求个前缀和什么的.本题就是直接对原序列求前缀和,然后发现一次操作相当于交换两个 ...
- mysql 修改默认配置 提高性能
解决问题 Lost connection to MySQL server at ‘reading authorization packet’, system error: 0 通过修改 connect ...
- tomcat中文配置
tomcat传递中文乱码,修改server.xml文件 <Connector port=" protocol="HTTP/1.1" connectionTimeou ...
- netty接收大文件的方法
参考:http://blog.csdn.net/linuu/article/details/51371595 https://www.jianshu.com/p/a0a51fd79f62 netty默 ...
- PS学习笔记 1---- 光和色的关系(上)
在HSB模式中,H(hues)表示色相,S(saturation)表示饱和度,B(brightness)表示亮度. HSB模式对应的媒介是人眼.HSB模式中S和B呈现的数值越高,饱和度明度越高,页面色 ...
- 常用 Git 操作
最新博客链接:https://feiffy.cc/Git 日常用到的GIT的一些操作,记下来,以备参考. 删除文件 git rm filename git commit -m "remove ...
- .net winform 调用类中的webbrowser 报错:当前线程不在单线程单元中,因此无法实例化 ActiveX
遇到这个恶心的问题纠缠得不要不要的,大家遇到了的话希望不要走弯路,经过这个折腾让我有点怀疑人生了.哈哈哈 解决代码如下: //插入一个新线程用于处理验证码 Thread thd = new Threa ...
- Spring MVC静态资源访问
最近在学习servlet的时候发现自己不能访问到css和js, 于是google一番学到不少方法加载,总结如下: 1.对于Spring MVC, 由于我们截获了所有请求<url-pattern& ...
- px、dp、sp、mm、in、pt这些单位有什么区别?
相信每个Android新手都会遇到这个问题,希望这篇帖子能让你不再纠结. px: 即像素,1px代表屏幕上一个物理的像素点: px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小 ...
- HDFS集群启动start-dfs.sh报错
[root@master sbin]# start-dfs.sh Starting namenodes on [master] master: Error: JAVA_HOME is not set ...