这是用另一个 BehaviorSubject 过滤 BehaviorSubject<object[]> 的正确方法吗?
Is this the right way to filter a BehaviorSubject<object[]> with a another BehaviorSubject?
我在网上想了几个小时如何用另一个 BehaviorSubject 过滤一个 BehaviorSubject 并听说了 switchMap 所以我实现了它。它有效,但我想知道是否有更合适的方法。 TIA.
// results$:arrayOfObject and activeEntityFilter$:number are both BehaviorSubjects
results$ = this.flowService.searchAppResult$;
filteredResult$ = this.activeEntityFilter$.pipe(
switchMap((activeEntityFilter) =>
this.results$.pipe(
map((flows) => {
return flows.filter((flow: any) => {
return activeEntityFilter
? flow.initiator_id == activeEntityFilter
: true;
});
})
)
)
);
您可以使用combineLatest
当其中一个可观察对象发出新值时,流程将被触发。
results$ = this.flowService.searchAppResult$;
filteredResult$ = combineLatest(this.activeEntityFilter$, results$).pipe(
map(([activeEntityFilter, results]) => {
return results.filter((result: any) => {
return activeEntityFilter
? result.initiator_id == activeEntityFilter
: true;
});
})
);
我在网上想了几个小时如何用另一个 BehaviorSubject 过滤一个 BehaviorSubject 并听说了 switchMap 所以我实现了它。它有效,但我想知道是否有更合适的方法。 TIA.
// results$:arrayOfObject and activeEntityFilter$:number are both BehaviorSubjects
results$ = this.flowService.searchAppResult$;
filteredResult$ = this.activeEntityFilter$.pipe(
switchMap((activeEntityFilter) =>
this.results$.pipe(
map((flows) => {
return flows.filter((flow: any) => {
return activeEntityFilter
? flow.initiator_id == activeEntityFilter
: true;
});
})
)
)
);
您可以使用combineLatest
当其中一个可观察对象发出新值时,流程将被触发。
results$ = this.flowService.searchAppResult$;
filteredResult$ = combineLatest(this.activeEntityFilter$, results$).pipe(
map(([activeEntityFilter, results]) => {
return results.filter((result: any) => {
return activeEntityFilter
? result.initiator_id == activeEntityFilter
: true;
});
})
);