uniapp中定时任务异步开启时如何防止泄露
setTimeout与setInterval选择
项目里要用到实时刷新,在一个tarbar的页面,几秒一次请求后台数据。这里比较常见做法是setInterval,setInterval会每次定时时间到立即执行一次,不管上一次是否已经执行结束。但是考虑到几个方面:后台接口的限流,ip连接数的限制,网络延迟,担心使用setInterval在极端情况下有大量冗余请求(上一次请求未结束未失败就发起新请求,,请求的执行时间和定时任务间隔时间大量重叠,最终在极短时间内,重复刷新)。所以选用setTimeout,在函数执行结束的回调里,再发起一次setTimeout。比如:
let millSecond = 1000;
function solve(){
...
business code ...
...
setTimeout(solve,1000);
return solve;
}
function start(){
setTimeout(solve(),1000);
}