setTimeout和动画在早期的函数中

时间:2011-08-09 10:37:00

标签: jquery function settimeout

要消除由于setTimeout(或setInterval)在标签(窗口)不活动(焦点松散)期间导致的动画累积,我不得不使用递归回调喜欢:

function auto() {
interval = setTimeout(function() {      
    $('#slider').animate({left: '-=500'}, 800, function(){
          auto();         // THE RECURSIVE CALLBACK
    });
}, 2000);
}
auto();

现在我希望重用#slider动画本身,因为我已经在之前的function animate()中定义了它(不改变function animate因为我必须在其他地方使用它,比如它是:

function animate(){
    $('#slider').animate({left: '-=500'}, 800);
}

如何开展类似工作

function auto() {
interval = setTimeout(function() {  

      animation();auto();  // THIS IS WRONG AS NOT a RECURSIVE CALLBACK - and creates animation buildup     

}, 2000);
}
auto();

提前多多感谢!

1 个答案:

答案 0 :(得分:2)

animate接受回调:

function animate(cb){
    $('#slider').animate({left: '-=500'}, 800, cb);
}

//...

interval = setTimeout(function() {  
    animation(function(){
        auto();
    });   
}, 2000);