如何使功能模块状态从许多延迟加载模块中全局缓存?

时间:2019-05-12 15:53:36

标签: angular ngrx

我有两个功能模块:(1)用户个人资料和(2)博客。应用程序根据(1)http://localhost/userprofile和(2)http://localhost/blogs的路由 userprofile blogs 延迟加载这些模块。当路由更改时,会产生一种效果,即调用http服务以从服务器检索数据。

我想从第二次以后阻止 http 调用,并在路由更改时从应用程序缓存中获取数据。我该如何设计应用程序范围的用户配置文件和博客缓存,以便从全局缓存中检索数据而不会进行http调用?

我不想在应用程序级别的应用程序级别为用户个人资料博客创建单个商店,因为功能模块将用作库(代码重复使用),因此需要为那些特定功能模块提供代码。

1 个答案:

答案 0 :(得分:1)

您可以在拨打电话之前检查商店中是否已经有东西

@Effect()
getOrder = this.actions.pipe(
  ofType<GetOrder>(ActionTypes.GetOrder),
  withLatestFrom(this.store.pipe(select(getOrders))),
  filter(([{payload}, orders]) => !!orders[payload.orderId])
  mergeMap([{payload}] => {
    ...
  })
)

有关更多信息,请参见我的帖子Start using ngrx/effects for this