2016-09-12 4 views
4

저는 Angular 2로 작업 중이며 서비스에서 일련의 비동기 호출을 만들고 있습니다. 일부 통화는 내 통화 체인에서만 조건부로 만들어야합니다. 내 초기 호출 체인은 다음과 같습니다 :조건부 2에서 각도를 관찰 할 수 있습니다.

this.post().flatMap(() => this.put()).flatMap(() => this.get())..etc. 

은 그 때 나는 조건부 변수 배열에 따라 내 체인에 추가 비동기 호출을 연결해야

의사 코드.

나는 이런 종류의 접근법을 사용하고 있습니다 :

의사 코드

...flatMap(() => return this.additionalCallsFunction(callArray)) 
.flatMap(() => this.finalPostRequest()).subscribe(...) 

additionalCallsFunction(callArray){ 
    if(callArray.length === 0) return Observable.empty() 
    else { return this.get().concatMap((res) => this.put(res).flatMap(() => { 
    callArray.removefirstItem() 
    return this.additionalCallsFunction(callArray) 
    }); 
} 

내가 각도와 Observables은 상당히 새로운, 그래서 나는이 제대로 접근하고있어 확실하지 않다 . 추가 호출 배열이 비어 있는지 여부에 관계없이 초기 호출이 발생하는 것을 보았습니다.하지만 함수가 반환 될 때 추가 호출이나 최종 게시물 요청이 이루어지지 않습니다. 내 콘솔에서도 오류가 표시되지 않습니다. .empty()를 .never()로 바꾸려고 시도했지만 변경하지 않았습니다.

도움/조언을 부탁드립니다.

+0

Observables에서 제공하는 추가 기능이 필요하지 않으므로 toPromise() 메서드를 사용하기로 결정하고 약속을 사용하여 해결했습니다. 내가 어디서 잘못되었는지 알기 위해서는 깔끔한 편이 좋을 것입니다. – wincelet

답변

1

나는 같은 상황이었고, Observable.empty() 대신에 Observable.of(undefined)을 사용했다. 그 이유는 모르지만 Observable.empty()은 체인을 방해합니다.

추가 설명은 매우 감사하겠습니다.

관련 문제