首页 > 解决方案 > 如何从许多延迟加载模块中全局缓存功能模块状态?

问题描述

我有两个功能模块(1)用户资料和(2)博客。应用程序基于路由userprofileblogs (1) http://localhost/userprofile和 (2) http://localhost/blogs延迟加载这些模块。当路由发生变化时,会产生调用 http 服务从服务器检索数据的效果。

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

我不想在应用程序级别为用户配置文件博客创建单个商店,因为功能模块将被其他应用程序用作库(代码重用),因此需要为这些特定功能模块提供代码。

标签: angularngrx

解决方案


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

@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


推荐阅读