2013-04-24 151 views
1

我在函數內部有一個動畫。我如何編碼以便在離開函數之前動畫應該先完成?jquery在離開函數之前等待動畫完成

考慮下面的代碼:

ShowBanner.prototype.basicRotate = function (pos, callback) { 
    var self = this; 
    self.animation = true; 

    this.bigbannerScroll.animate({ 
     left: pos 
    }, this.settings.rotateSpeed, function() { 
     self.animation = false; 
     if (callback) callback(); 
     console.log('animation done'); 
     return false; 
    }); 

    console.log('function done'); 
} 

基於代碼的console.log('function done')console.log('animation done')之前首先調用。有沒有辦法讓第一個日誌先被調用,說明離開函數之前動畫已經完成了?

+0

它不會這樣工作,因爲animate是一個異步函數,您需要使用回調機制 – 2013-04-24 08:52:59

回答

0

不,因爲animate是一個異步函數,它將啓動動畫並返回。

如果您需要在動畫完成後執行某些操作,那麼您需要使用完整的回調。

0

animate是異步的,所以我不認爲有一種方法可以在動畫發生時暫停。最好的選擇就是堅持使用complete回調函數。

另一種替代方法是設置超時(使用setTimeout)來定義在指定時間後運行的另一個函數。但是,我看不到這樣做的好處。

相關問題