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

时间:2021-02-17 14:31:30

标签: rxjs rxjs-observables rxjs-pipeable-operators

我的第一个 observable 返回一个 Persons 数组。我想用来自第二个 observable 的客户列表更新该数组中的每个人。我怎么做?到目前为止,我有这个:

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;
  }
}

但问题是返回值发生在设置值之前,所以在 person.clients 的最终值是未定义的。我该如何解决?或者有什么更好的方法可以实现我的目标?

1 个答案:

答案 0 :(得分:0)

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

entries