现代jQuery动画中的setInterval()和setTimeout()是不是很糟糕?

Dex*_*olf 4 javascript jquery animation

我用jQuery 1.6的动画遇到了一些问题.我用jQuery 1.5解决了它.

在我的项目中,我曾经setInterval()制作自定义徽标滑块.动画一两个即时(不是同时)激发.当我在页面上时,一切顺利,但是当我继续其他选项卡并在我的页面项目中回归(一分钟,两个左右)之后,一切都变得疯狂......

好的,我有一个答案可以使用Queue().我可以用这种方法实现同样的目的吗?

我已经预订了Manning jQuery in Action,并没有立即激发动画Queue().

链接到Jsfiddle

引用一些答案:

由于requestAnimationFrame()的性质,您不应该使用setInterval或setTimeout循环对动画进行排队.

mar*_*tin 12

通常,setInterval == BADsetTimeout == GOOD用于动画.

nnnnnn所述,setInterval将尝试播放追赶:

某些浏览器可能会对所有内容进行排队,然后在标签再次获得焦点时尝试赶上

循环animate()的最佳方法是通过递归调用,例如:

var myTimeout;

var myAnimation = function () {

    $('#myID').animate({
        [propertyKey]:[propertyValue]
    }, 5000, function() {
        myTimeout = setTimeOut(myAnimation, 1000);
    });
}
Run Code Online (Sandbox Code Playgroud)

注意如何myTimeout举行的范围之外myAnnimation允许停止动画的能力

clearTimeout(myTimeout);
Run Code Online (Sandbox Code Playgroud)

您可以连接到window.unload事件.