将Observable <object>中的值推送到Observable <array>

时间:2018-03-02 22:44:12

标签: angular typescript rxjs observable

我有两个不同的API端点。一个返回Cards个对象,另一个返回Cards个对象数组。我想要做的是从第二个端点获取第一个Card作为Array中的第一个元素。有没有办法做到这一点?两者都是HTTPClient返回的可观察量,所以也许对某些算子来说很简单,但我还不知道这样做。只是为了更好地说明:

我有:

latestCards$: Observable<Cards> = http.get('latestCardsEndpoint');
// { title: 'Latest', cards: [], ... }  

featuredCards$: Observable<Cards[]> = http.get('featuredCardsEndpoint');
// [
//   { title: 'Featured1', cards: [], ... }, 
//   { title: 'Featured2', cards: [], ... },
//   ...
// ]

我需要

homeCards$: Observable<Cards[]>;
// [
//   { title: 'Latest', cards: [], ... },
//   { title: 'Featured1', cards: [], ... },
//   { title: 'Featured2', cards: [], ... },
//   ...
// ]

1 个答案:

答案 0 :(得分:1)

有很多方法可以解决这个问题,其中之一就是:

Observable
    .combineLatest(latestCards$, featuredCards$) // return an array of responses
    .map(([lastestCard, featuredCards]) => [lastestCard, ...featuredCards])
    .subscribe(// do your stuff)

以下是jsfiddle中的一个示例:http://jsfiddle.net/foxfghhn/