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));
我的第一个观察对象 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));