Angular 是否有类似于withLatestFrom但带有参数的RxJS运算符?
我的Angular 5应用程序基于,一个类似于Redux但基于RxJS的状态管理库 我经常需要根据当前操作的有效负载从存储中获取最新的值 在RxJS术语中,这意味着我拥有不断生成项目的主流,对于每个新项目,我需要根据项目的价值创建一个副流,从这个流中获取最新的价值,并将其与主流相结合 现在,我做了这样的事情:Angular 是否有类似于withLatestFrom但带有参数的RxJS运算符?,angular,rxjs,ngrx,Angular,Rxjs,Ngrx,我的Angular 5应用程序基于,一个类似于Redux但基于RxJS的状态管理库 我经常需要根据当前操作的有效负载从存储中获取最新的值 在RxJS术语中,这意味着我拥有不断生成项目的主流,对于每个新项目,我需要根据项目的价值创建一个副流,从这个流中获取最新的价值,并将其与主流相结合 现在,我做了这样的事情: @Effect() public moveCursor$: Observable<Action> = this.actions$.pipe( ofType<Table
@Effect()
public moveCursor$: Observable<Action> = this.actions$.pipe(
ofType<TableAction.MoveCursor>(TableActionType.MOVE_CURSOR),
switchMap(action => this.store$.select(selectTableById(action.payload.cursor.tableId)).pipe(
first(),
map(table => ({action, table}))
)),
map(({action, table}) => {
...
})
)
因此,我的问题是:是否有任何RxJS运算符类似于
withLatestFrom
,它可以将第一个流产生的值作为参数?您可以使用mergeMap
和map
将操作与从存储中选择的表相结合:
@Effect()
public moveCursor$:Observable=此.actions$.pipe(
ofType(TableActionType.MOVE_游标),
mergeMap(action=>this.store$
.select(selectTableById(action.payload.cursor.tableId))
.烟斗(
第一个(),
映射(表=>[操作,表])
)
),
映射([操作,表])=>{
...
})
)
您需要首先使用或获取(1)
,以确保从存储中选择的内部可观察对象只发出一个值,即要与操作组合的表。我终于做到了
doEffect$ = this.actions$.pipe(
ofType<someAction>(losActionTypes.someAction),
switchMap/mergeMap/concatMap( // according to your logic
action => of(action).pipe(
withLatestFrom(this.store.pipe(select(leFancySelector)))
)),
tap(console.log) // tap if you don't believe me
doEffect$=此.actions$.pipe(
ofType(losActionTypes.someAction),
switchMap/mergeMap/concatMap(//根据您的逻辑
action=>of(action).pipe(
withLatestFrom(this.store.pipe(select(leFancySelector)))
)),
点击(console.log)//如果你不相信我,点击
谢谢。但即使没有调度新操作,但存储中表的值已更改,它也会开始生成新值吗?是的,您是对的,它会。您也需要先使用或获取(1)
。
doEffect$ = this.actions$.pipe(
ofType<someAction>(losActionTypes.someAction),
switchMap/mergeMap/concatMap( // according to your logic
action => of(action).pipe(
withLatestFrom(this.store.pipe(select(leFancySelector)))
)),
tap(console.log) // tap if you don't believe me