MSClass 和setInterval 的并发,ajax定时有采集信息滚动显示

时间:2022-03-19 08:19:16

setTimeout 用于延时器,只执行一次.

setInterval:用于多次执行.

//******************************************

项目中引用到jquery.timers-1.2.js定时器,并且MSClass做信息定期滚动,每3分钟执行一次,执行三次左右,滚动的次数越来越快,原因在于timers和MSClass都用了setInterval,

都会再次添加一个setInterval,最后导致几个setInterval并发执行了,所以速度很快,需要在调用的时候clearInterval上次的setInterval ,或者引用MSClass作者的原方法,

//定时器先执行 销毁实例

var Marquee1 = new Marquee(["div1", "Content"])
        function Marquee_everyTime() { 
           Marquee1.Destroy(); //销毁实例应用

GetMarqueeInfo();   //然后ajax采集需要的信息数据。     
        }

//ajax方法

function GetMarqueeInfo() {              
            LG.ajax({
                type: 'AjaxOther',
                method: 'GetMarqueeInfo',
                success: function (data, tipsContent) { 
                                     
                    $("#Content").html("");
                    $("#Content").html(tipsContent);                 
                    //大容器| 小容器 |滚动的方向 |滚动的速度 | 大容器的宽度 | 大容器的高度 | 滚动休息时间 | 滚动休息时间 | 滚动结束时间      
                 Marquee1.Direction = 2;
                 Marquee1.Step = 0.4;
                 Marquee1.Width = 640;
                 Marquee1.Height = 30;
                 Marquee1.Timer = 20;
                 Marquee1.DelayTime = 4000;
                 Marquee1.WaitTime = 3000;
                 Marquee1.ScrollStep = 320;
                   
                 Marquee1.Start();       
                   
                     
                },
                error: function () {
                    LG.tip('信息加载失败.');
                }
            });

}