2013-04-24 8 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가 비동기 함수이기 때문에 콜백 메커니즘을 사용해야합니다. –

답변

0

아니요, animate는 비동기 함수이므로 애니메이션을 시작한 다음 반환됩니다.

애니메이션이 완료된 후에 무언가를해야한다면 완전한 콜백을 사용해야합니다.

0

animate은 비동기식이므로 애니메이션이 진행되는 동안 잠깐 멈출 수있는 방법이 없다고 생각합니다. 가장 좋은 방법은 그 complete 콜백 함수를 사용하는 것입니다.

또 다른 대안은 지정한 시간 후에 실행할 또 다른 기능을 정의하기 위해 시간 초과 (setTimeout 사용)를 설정하는 것입니다. 그러나, 나는 이것의 이득을 볼 수 없다.

관련 문제