ajax 多个setInterval进行ajax请求的页面长时间打开会出现页面卡死问题

 多个setInterval进行ajax请求的页面长时间打开会出现页面卡死问题

方案一:

setInterval会消耗网页内存,如果不清理会一直消耗直到网页卡死。

解决办法:

先清除定时器再创建一个定时器

clearInterval(t);

t=setInterval(ajax,10000);

方案二:(等价于同步)

使用JQuery Deferred对象。
var getWordCount = function(。。。){
        var defer = $.Deferred();
        var urlStr = "postcommit.html?I_SOURCE=getxliff";
        $.ajax({
            url : urlStr,             //async : false,表示异步执行。
            success: function(dataStr){
                      defer.resolve(dataStr);
            }
        });        
        return defer.promise();
   }

var myTotalprice = function(。。。){
                           //当getWordCount() 执行完成后,执行done()以下操作。就跟同步效果一样。
                          $.when(getWordCount(。。。)).done(function(dataStr){
                                       alert(dataStr);
                           });                   
   }

方案三:

参考地址:https://www.jianshu.com/p/55448bc08961

使用web worker:

var worker = new Worker('worker.js');//必须是同域的

worker.postMessage(msg);//主页面向worker发消息。msg可以是对象,字符串之类。

onmessage = function(evt) {// 处理主页面发来的消息
    postMessage('reveive data ' + evt.data + 'from page');// 向主页面发消息
}

worker.terminate();

猜你喜欢

转载自www.cnblogs.com/zlp520/p/9292079.html