在数组的可观察对象中增加单独的值 - RxJS

Augment seperate values in observable of array - RxJS

我已经尝试解决这个问题一段时间了,我想这是一个很常见的问题,但我想做的是增加来自可观察对象的数组中的项目,并且增加发生在可观察的或类似承诺的 所以我想要如下内容:

function augment(person: Person): Observable<PersonWithAddress> { 
    // does ajax call or something
}

const items$: Observable<Person[]>;

items$
    .do(x => {}) // x would be of type Person[]
    .flatFlatMap(person => { // person would be of type Person
        return augment(person); // this would return an Observable<PersonWithAddress>
    })
    .subscribe(peopleWithAddresses => { // peopleWithAddresses would be of type PersonWithAddress[]
    })

是否有某种类型的运算符,我知道我可以增加或映射从 observable 发出的单个项目到来自带有 flatMap 的 observable 的其他东西,但是是否有类似 flatFlatMap 之类的东西。

你可以使用forkJoin做你想做的事。

它接受一组可观察对象(或承诺),当所有对象都完成(或解决)时,它会发出一个包含最后发出(或解决)值的数组:

import { Observable } from "rxjs/Observable";
import "rxjs/add/observable/forkJoin";


items$
  .flatMap((people: Person[]) => Observable.forkJoin(
    people.map(person => augment(person))
  ))
  .subscribe((peopleWithAddresses: PersonWithAddress[]) => {
    // ...
  });