중첩 된 관측 가능 지옥에 갇혀 있고 손으로 할 수 있습니다.중첩 된 관측 가능 개체를 좁히기
나는 다음과 같은 코드 블록
return this.findUser(term).map(users => {
return users.map(user => this.getLastLogin(user.user_id).map(last_login => {
user.last_login = last_login;
return user;
}));
});
findUser
반환 Observable<User[]>
및 getLastLogin
반환 Observable<number>
있습니다.
기본적으로 사용자 목록을 가져 와서 다른 값의 정보로 업데이트하려고합니다.
지금 위의 코드는 <Observable<Observable<User>[]>
을 반환합니다.
map
을 flatMap
으로 바꿀 수 있다고 생각했지만이 경우 개체가 <Observable<Observable<User>>
으로 바뀝니다.
RxJS 문서 그래서 나는 내가 필요로 저를 얻을 것이다 switch
, forkJoin
또는 flatMap
어떤 조합 모르겠어요 해독 조금 어렵습니다.
나는 Observable<User[]>
을 반환하고 싶습니다. 누구든지 올바른 방향으로 나를 가리킬 수 있을까요?
하지만 난 여부에 관해서 궁금 : https://jsbin.com/naqudun/edit?js,console
이 인쇄 콘솔로 :
라이브 데모를 참조하십시오 배열 순서는 항상 소스 배열의 배열 순서와 일치합니다 :'mergeMap'을 사용하면 비 결정적 순서로 결과가 나타 납니까? 순서가 병합 된 관찰 대상이 먼저 출현하는지에 달려 있습니까? – cartant이것은 사실입니다.'merge' 나'mergeAll'은 같은 순서를 보장 할 수도 있고 그렇지 않을 수도 있습니다.그러나 문제가된다면'mergeMap'을'concatMap'으로 대체하면됩니다. – martin
흥미롭게도이 코드는 TypeScript의 클래스를 사용할 때는 작동하지 않습니다. 컴파일 할 때'findUsers' 메쏘드에서'mergeAll'이'User []'를 리턴하는 것처럼 보입니다. 여기 내가 보는 행동에 대한 링크가 있습니다. https://jsbin.com/wiwayikiye/edit?js,console 아이디어가 있습니까? – user3750194