【发布时间】:2021-12-25 23:31:41
【问题描述】:
假设我有一个函数generateIdUpdate,它使用一个可观察的 id 来加载属于该 id 的人的地址。我想在成功完成地址加载后设置一个实例变量来保存选定的 id。最好的方法是什么?
另外,这是否反映了糟糕的设计(即,有一个函数加载地址并在最后更新有状态字段)?
export class TapTest {
private selectedId: number;
private id$: Observable<number> = ...;
generateIdUpdate$(): Observable<PersonAddress> {
return id$.pipe(
// switchMap in case a new Id is selected while loading
switchMap(id => loadPerson(id)),
// Get the observable of addresses
mergeMap((person: Person) => loadAddresses(person)),
tap(
// since this completed successfully, set the selectedId field to the id
)
);
}
loadPerson(id: number) : Person { ... }
loadAddresses(person: Person) : Observable<PersonAddress> { ... }
}
给定以下函数,它尝试获取发出的 id、加载人员、加载地址并返回它们,而且在将地址加载到实例变量时更新人员的有状态 id,正确的方法是什么通过处理流“携带” id?
【问题讨论】:
标签: rxjs