使用setTimeout写法替代setInterval方法,减少内存使用

  • 2019-06-26
  • 0
  • 0

最近在写一个小项目,需要前端轮询后台数据,并实时展示,首先考虑的是setInterval实现,

但是随着请求的不断增加内存的使用也随之缓慢增加,看了一些文档和博客介绍,setInterval方法

是队列操作,而且当请求超过轮询时间会导致内存泄露,最后把setInterval方法替换为setTimeout方法

setInterval实现

//每分钟查询一次
var timer = function () {
    setInterval(function () {
        getMessageNum(); //异步获取后台数据
    }, 60000);
};

setTimeout方法替换

var timer = function (fn, time) {
    return function walk(){
        setTimeout(function () {
            fn();
            walk();
        }, time);
    }
};

timer(getMessageNum, 60000)();

setInterval优缺点:

严格按照时间段执行,不会造成执行间隔不同,获得数据相对准确,但是对内存损耗比较大

setTimeout优缺点和setInterval想反

总而言之,两种方法都能解决问题,看个人需求来选择用哪种方法,并没有对与错。

评论

还没有任何评论,你来说两句吧