【发布时间】:2021-02-17 14:31:30
【问题描述】:
我的第一个 observable 返回一个 Persons 数组。我想用第二个可观察的客户列表更新该数组的每个人。我怎么做?到目前为止,我有这个:
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 的最终值是未定义的。我该如何解决?或者有什么更好的方法来实现我想要做的事情?
【问题讨论】:
标签: rxjs rxjs-observables rxjs-pipeable-operators