我有一个ngrx效果(大量使用rxjs)如下:
@Effect()
allFiltersRequested$ = this.actions$.pipe(
ofType<AllFiltersRequestedAction>(FiltersActionTypes.AllFiltersRequested),
tap((action) => debug(action)),
withLatestFrom(this.store.pipe(select(selectAllFilters))),
filter(([action, allFilters]) => isEmpty(allFilters)),
mergeMap(() =>
this.simService.getAllFilters().pipe(
catchError(() => {
return of({})
})
)
),
map((allFilters) => new AllFiltersLoadedAction(allFilters))
)
我在用
filter
防止发出HTTP请求(请参见
mergeMap
)如果存储已填充(因为来自API的数据没有更改)
但是,我总是想执行:
map((allFilters) => new AllFiltersLoadedAction(allFilters))
不管是否发出了HTTP请求但是它不能在
合并映射
因为
合并映射
确保
allFilters
数据可用。
有RXJ吗
always do this
键入运算符?如果不是,我应该如何重构这些代码来实现我想要的目标?
目前,唯一的解决办法是
滤波器
但这将导致不必要的HTTP请求。
谢谢