Angular 如果效果返回缓存结果,则Angualr组件不会装载

Angular 如果效果返回缓存结果,则Angualr组件不会装载,angular,ngrx,ngrx-store,ngrx-effects,Angular,Ngrx,Ngrx Store,Ngrx Effects,我试图缓存http请求以减少通信量,实际上我是在检查是否已经检索到用户任务。但当我这样做时,当我返回缓存的任务时,组件不会呈现。如果删除它并再次发出http请求,它将继续工作 这是TasksEffect类 @注射的 导出类TasksEffect{ @Effect fetchEffects=此.actions$.pipe ofTypeTaskListActions.FETCH_任务, 使用this.store.select'tasksModule', 开关映射[操作,任务模块]=>{ 如果任务模块

我试图缓存http请求以减少通信量,实际上我是在检查是否已经检索到用户任务。但当我这样做时,当我返回缓存的任务时,组件不会呈现。如果删除它并再次发出http请求,它将继续工作

这是TasksEffect类

@注射的 导出类TasksEffect{ @Effect fetchEffects=此.actions$.pipe ofTypeTaskListActions.FETCH_任务, 使用this.store.select'tasksModule', 开关映射[操作,任务模块]=>{ 如果任务模块.tasks.length{ 返回新的TaskListActions.SetTasks[…tasksModule.tasks]; } 将此.taskService.FetchTasksActions作为TaskListActions.FetchTasks.interval返回 管 catchErrorerr=>oferr, switchMaptasks=>of new TaskListActions.setTasksTasksTasks, ; } ; constructorprivate taskService:taskService,私有存储:存储,私有操作$:操作{ } } 我的代码有问题吗?如果是这样的话,我该如何修复它?还有更好的方法来缓存http请求,比如在代码中的react中的memoize,catchErrorerr=>oferr应该在switchMap之后,因为在发生错误的情况下,错误将减少为TaskListActions.SetTasks

试着这样做,如果它不起作用-让我在评论中知道。然后您需要检查其他地方,效果很简单,可能this.taskService.fetchTasks有问题

@注射的 导出类TasksEffect{ @Effect fetchEffects=此.actions$.pipe ofTypeTaskListActions.FETCH_任务, 使用this.store.select'tasksModule', 开关映射[操作,任务模块]=>{ 如果tasksModule.tasks&&tasksModule.tasks.length{ 返回新的TaskListActions.SetTasks[…tasksModule.tasks]; } 将此.taskService.FetchTasksActions作为TaskListActions.FetchTasks.interval返回 管 maptasks=>new TaskListActions.SetTasksTasksTasks, catchErrorerr=>oferr, ; } ; constructorprivate taskService:taskService,私有存储:存储,私有操作$:操作{ } } rxjs操作符的shareReplay对于缓存很有用。第一个订阅服务器从http请求获取数据,然后所有订阅服务器仅获取缓存数据。