2014-11-28 1 views
0

이 코드가 있습니다. 그러나 나는 첫 번째 것이 끝나면 shure 될 필요가있다. 그래서 약속과 지연 방법을 사용합니다. 뭔가 bc 두 번째 작업이 정의 된 시간 초과 지연 전에 시작되지 않습니다. 뭐가 잘못 되었 니? 아무도 도와 줄 수 있니?은 corectly

+0

'수정하지만 난 첫 번째는 첫 번째는'promise'입니다 finished' 것을 슈어 할 필요가? 나는 당신의 논리를 이해하지 못합니다. 정확히 어떤 행동을 기대하고 있습니까? 나는 당신이 지연을 해결하기 위해'transit' 콜백을 사용해야한다고 생각합니다. 그러나 실제로 타임 아웃의 목적이 무엇인지 확실하지 않습니다. –

+0

예, 첫 번째 약속은 전송이고 유일한 CSS 애니메이션 플러그인입니다. – Lukas

+0

jQuery를 사용하고 싶지 않다면 플러그인을 보는 것이 유일한 해결책이다. – specializt

답변

1

체인이 올바르게 설정되지 않았습니까?

t 약속은 d 체인으로 반송되지 않았습니다.

코드

var d = $.Deferred(); 
var promise = d.promise(); 
// 
promise = promise.then(function(){ 
    var t = new $.Deferred(); 
    console.log('1st promise callback'); 
    //var cont = $('.cont').find('> div'); 
    setTimeout(function(){ 
    //requirejs(["transit"], function(){ 
     //cont.transit({opacity: .4}); 
     // 
     console.log('timeout 1 func'); 

     setTimeout(function(){ 
      console.log('timeout 2 func'); 
      //cont.remove(); 
      t.resolve(true); 
     }, 10); 
    },30); 

    return t.promise(); 
}); 
// 
promise.then(function() { 
    console.log('test'); 
}); 
// 
d.resolve(); 

출력

1st promise callback (index):27 
timeout 1 func (index):33 
timeout 2 func (index):36 
test 

바이올린 here

+0

완벽하게 작동합니다. – Lukas

0

비동기 작업이 별도의 스레드에서 실행 기능 - (이미 jQuery를 경우 완전히 불필요)이 $ .when

$.when(function).done(function(x) { 
    console.log('test'); 
}); 
+2

이것은'promise.done (...);과 같습니다.'promise.then (success);와 같습니다. '$ .when'은 다중 연기에 유용합니다 –

0
가 아닌 JQuery와의 어떤 종류를 사용하고

, 비동기를 사용하지 왜 발신자가 즉시 완료됩니다. 순차적 실행을 확실히 원할 경우 애니메이션()과 같은 적절한 jQuery UI 메서드를 사용하고 링크에 설명 된대로 완전한 핸들러를 추가 할 수 있습니다.