rxjs:订阅地图中的可观察对象

rxjs: subscribing to observable in map

我的第一个观察对象 return 是一组人物。我想用来自第二个可观察对象的客户列表更新该数组中的每个人。我怎么做?到目前为止我有这个:

const json: Person[] = [new Person('Alice'), new Person('Bob')];

const resultsObservable = new Observable<string[]>(subscriber => {

  setTimeout(() => {
    subscriber.next(['Client1', 'Client2', 'Client3']);
    subscriber.complete();
  }, 1000);
});

of(json).pipe(
  switchMap( dataArray => {
    return from(dataArray);
  }),
  map((x: Person) => {
    resultsObservable.subscribe(r => {
      x.clients = r;
    });
    return x;
  }),
).subscribe(value => {
    console.log(value);
});

}

人:

export class Person{
  name: string;
  clients?: string[];

  constructor(name: string) {
    this.name = name;
  }
}

但问题是 return 发生在设置值之前,因此 person.clients 的最终值未定义。我该如何解决?或者什么是实现我想要做的事情的更好方法?

好的,我想我找到了我要找的东西:

    const result = persons.pipe(
      mergeMap(p => resultsObservable.pipe(map(clients => {
        p.clients = clients;
        return p;
      }))),
    );
    result.subscribe(p => console.log(p));