gpt4 book ai didi

angular - ngrx/effects 使用具有状态值的延迟运算符

转载 作者:行者123 更新时间:2023-12-03 19:37:39 25 4
gpt4 key购买 nike

在我的应用程序中,我跟踪 session 时间

  @Effect()
session$: Observable<Action> = this.actions$
.ofType(authAction.RESET_SESSION)
.switchMap(_ => Observable.of({ type: authAction.LOGOUT })
.delay(600000);

*每次调用 RESET_SESSION 操作时,注销操作都会等待 10 分钟。

在我的应用程序中,我从服务器获取 session 时间并在登录后存储状态。我怎样才能延迟使用这个存储值?! (因为在 ngrx 存储中返回可观察的而不是状态对象)

像这样的东西:
 @Effect()
session$: Observable<Action> = this.actions$
.ofType(authAction.RESET_SESSION)
.switchMap(_ => Observable.of({ type: authAction.LOGOUT })
.delay(this.store.pluck('auth','sessionTime'));

最佳答案

您需要通过构造函数将商店注入(inject)到效果中。就像是:

@Injectable()
export FooEffects {
@Effect()
session$: Observable<Action> = this.actions$
.ofType(authAction.RESET_SESSION)
.mergeMap(_ => this.store.select(getSessionTime)) //getSessionTime would be a selector
.switchMap(delay => Observable.of({ type: authAction.LOGOUT }).delay(delay));

ctor(
private actions$: Actions,
private store: Store<rootState>){}
}

关于angular - ngrx/effects 使用具有状态值的延迟运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45960592/

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