Clo*_*e24 4 rxjs typescript ngrx ngrx-effects angular
NGRX效果是否可以具有某种“回调功能”或监视程序?用例是,我试图在浏览器刷新期间保持状态。在每种效果运行之后,我想调用我的缓存服务以保存应用状态。目前,我正在通过将其添加到每个效果中来做到这一点:
tap(() => setTimeout(() => this.cacheService.saveAppState()))
Run Code Online (Sandbox Code Playgroud)
感觉应该有更好的方法来实现这一目标?
是的,有更好的方法。您可以OnRunEffects在效果类上实现。例如:
@Injectable()
export class OrderStoreEffects implements OnRunEffects {
// Resolves to either QueryCompleted or QueryFailed
@Effect()
queryOrdersFromProduct$: Observable<Action> = this.actions$.pipe(...);
// Resolves to either QueryCompleted or QueryFailed
@Effect()
queryOrdersFromWorkCenter$: Observable<Action> = this.actions$.pipe(...);
constructor(...) {}
ngrxOnRunEffects(resolvedEffects$: Observable<EffectNotification>) {
return resolvedEffects$.pipe(tap(effect => console.log({ effect })));
}
}
Run Code Online (Sandbox Code Playgroud)
每当执行并解决该类中的一个效果时,该resolvedEffects$observable就会发出。OrderStoreEffects
发出的值如下所示:
这为您提供了应用过滤器或其他逻辑的其他可能性。
有关该OnRunEffects界面的更多信息,请检查文档
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |