gpt4 book ai didi

angular - 是否有类似于 withLatestFrom 但带有参数的 RxJS 运算符?

转载 作者:行者123 更新时间:2023-12-02 08:08:29 27 4
gpt4 key购买 nike

我的 Angular 5 应用程序基于 NgRx ,这是一个类似于 Redux 但基于 RxJS 的状态管理库。

我经常需要根据当前操作的有效负载从存储中获取最新值。

在 RxJS 术语中,这意味着我有我的主流,它不断地生产项目,对于每个新项目,我需要根据项目的值创建一个侧流,从该流中获取最新值,并将其与主流结合。

目前,我做这样的事情:

@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}) => {
...
})
)

我知道这可能不是最好的解决方案,我正在寻找这样的东西( withLatestFrom 运算符无法实现):
@Effect()
public moveCursor$: Observable<Action> = this.actions$.pipe(
ofType<TableAction.MoveCursor>(TableActionType.MOVE_CURSOR),
withLatestFrom(action => this.store$.select(selectTableById(action.payload.cursor.tableId))),
map(([action, table]) => {
...
})
)

所以我的问题是:是否有任何类似于 withLatestFrom 的 RxJS 运算符可以将第一个流产生的值作为参数?

最佳答案

我终于做到了...

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

关于angular - 是否有类似于 withLatestFrom 但带有参数的 RxJS 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49225314/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com