js 线程不随页面销毁比如 setTimeout 和 setInterval
在 mac 开发者工具中和 微信app 皆可复现 两个页面:index 和 game 1 index 页面点击按钮 navigateTo 跳转到 game 页面 2 game 页面自动开一个 setInterval 绘制一个 100 秒的 canvas (canvas 元素是写死在 wxml 中的) 倒计时 3 倒计时未结束时(比如还有90秒),用户点击左上角返回按钮返回到 index 页面 4 再次 index 页面点击按钮 navigateTo 跳转到 game 页面 5 game 页面的 canvas 正在被两个 setInterval 重复绘制 6 这样反复操作 N 次,game 页面的 canvas 就会被 N 个 setInterval 重复绘制 结论: js 线程不随页面销毁的销毁而销毁,按照小程序生命周期的逻辑,game 页面返回到 index 页面,那么 game 页面出栈,应该被销毁,为什么 js 线程还在执行? setTimeout 和 setInterval 这种 异步回调都不销毁,why?? 难道要监听 game 页面的 onUnload,手动清除所有回调?? 这样的设计初衷是什么 ,这不内存一直泄露了么? 后来试了下 全局变量也不销毁 [图片] [图片]