关于轮询,定时器的清除处理,页面跳转时因接口返回延时而产生的定时器该如何清除?
发布于 5 年前 作者 juan91 15047 次浏览 来自 官方Issues

本来不想做轮询,但不可否认,在一些需求下是最简单粗暴的方法。

流程如下:页面onload的时候发起请求a,在a的成功回调里设置一个timeout定时器,2秒后继续发起请求a,这样循环。然后在页面onHide和onUnload的时候都清除这个timeout,看起来没有问题对吧。

但如果a接口响应时间要5秒,页面触发onUnload的时候,前面已经有一个a的请求发了出去,虽然页面已经销毁,但是a的请求已经在连接,回调还会执行,然后开新的定时器,而这时候,错过了onHide和onUnload,已经关不掉了。

都看得明白吧,有空再搞代码片段,为了解决这个,目前想到

笨办法1,定时器全局管理,所有页面都检查,然后清除。

笨办法2,接口a开始新定时器时,判断下当前页面路径getCurrentPage是否等于this.route,相等才使用定时器。

大佬们有啥建议呢?

回到顶部