2014-04-05 3 views
1

그래서 데이터를 보내고 http 요청을 보내고받는 data.people() 함수가 있으므로 약속을 사용하고 있으며이 함수는 약속을 반환합니다. 그 후 나는 내가 여기에 대한 다큐멘터리를 찾을 수 없습니다 원인, 그래서 난이 올바른 쓰고RSVP 약속을 연결하는 올바른 방법

data.people() 
.then(function() { 

    .... 
}, function(err) { 
    console.error(err); 
}).then(function() { 
     ... 
}, function(err) { 
    console.error(err); 
}).then ... 

을 연쇄 folowing을 사용 나는 세 번째 약속 주어진 ID로 하나 개의 요소에의 EventListener를 연결할 때, 그것을 두 번째 약속이 실행되기 전에 실행되며 (이 요소는 동일한 ID로 다른 요소와 함께 변경됩니다) 세 번째 약속에서 작동하지 않습니다 (필요한 곳). Here은 jsfiddle의 전체 코드입니다.

+0

약속 핸들러는 오류를 "catch"하고 다음 함수를 'undefined'로 다시 시작합니다! 가치가있는 – Bergi

답변

2

예, 작품을 쓰고 있지만 최적 상태는 아닙니다.

.then 중 하나에서 약속을 반환하지 않는 한 호출 할 이유가 없습니다.이 중 하나에서 약속을 반환하지 않는 경우 비동기 작업이 완료 될 때까지 대기합니다. 당신의 thens 반환 약속 없음 때문에

data.people().then(function(people){ 
    //rest of code here 
}); 

:

귀하의 코드를 단순화 할 수있다.

약속을 반환하지 않는 약속은 거의 즉시 다음 .then으로 이어질 것입니다. 당신이 체인 핸들러를하고 나중에 .then 호출에서 반환 값을 액세스 할 경우에도

, 당신은 그 .then 핸들러에서 데이터를 반환해야합니다.

+0

읽기 - https://gist.github.com/domenic/3889970 –

관련 문제