Angular 如何用标准方法清理rxjs缓存

Angular 如何用标准方法清理rxjs缓存,angular,typescript,angular6,Angular,Typescript,Angular6,我有一个从服务器缓存数据的服务。但是在最后一次调用getView()之后,我需要每10秒清理一次缓存 可能是什么 .pipe( switchMap(timer$), tap(()=>cached$=null) ) 所以我们的想法是,如果您再次调用服务,内部时间$将被取消,并且将重新创建一个新的时间$。但我不确定这是否是你想要的实际行为。可能是什么 .pipe( switchMap(timer$), tap(()=>cached$=null) ) 所以我

我有一个从服务器缓存数据的服务。但是在最后一次调用
getView()
之后,我需要每10秒清理一次缓存


可能是什么

.pipe(
   switchMap(timer$),
   tap(()=>cached$=null)
) 

所以我们的想法是,如果您再次调用服务,内部时间$将被取消,并且将重新创建一个新的时间$。但我不确定这是否是你想要的实际行为。

可能是什么

.pipe(
   switchMap(timer$),
   tap(()=>cached$=null)
) 

所以我们的想法是,如果您再次调用服务,内部时间$将被取消,并且将重新创建一个新的时间$。但是我不确定这是否是您想要的实际行为。

如果您的意思是,您希望在每10秒调用一次getView()之后调用某个函数

您可以使用rxjs中的Interval,请参阅关于


间隔将执行,此.cache$为空,每10秒执行一次。

如果您的意思是,您希望在每10秒调用一次函数后调用某个函数

您可以使用rxjs中的Interval,请参阅关于


间隔将执行,此.cache$将为空,每10秒执行一次。

干净的rxjs缓存是什么意思?我想你可以使用类似管道的东西(switchMap(timer$)…@ABOS我是说在最后一次调用10秒后,如果(!this.organizationViewCache$)返回
true
。@ABOS你能写出你的建议的更详细的例子吗?我不完全理解你想做什么,所以只是一些粗略的想法。我在下面添加了答案,为了便于阅读,您所说的干净rxjs缓存是什么意思?我想你可以使用类似管道的东西(switchMap(timer$)…@ABOS我是说在最后一次调用10秒后,如果(!this.organizationViewCache$)返回
true
。@ABOS你能写出你的建议的更详细的例子吗?我不完全理解你想做什么,所以只是一些粗略的想法。我在下面添加了答案,为了便于阅读,您的意思是
catchError
之后使用
shitchMap`和
点击
,类似
.pipe(shareReplay(1),catchError(this.handleError)开关映射(timer$),点击(()=>cached$=null))
timer$在这种情况下不应该导致错误,所以我只想在http callI中保留catchError,我很困惑,请您重新编写一个示例,说明如何将此解决方案与我的http请求上下文连接起来。我不知道如何将HTTP请求中的管道()与解决方案中的管道结合起来。你是说
catchError
之后使用
shitchMap`和
tap
类似
.pipe(shareReplay(1)、catchError(this.handleError)开关映射(timer$)、tap(()=>cached$=null))
timer$在这种情况下不应该导致错误,所以我只想在http callI中保留catchError,我很困惑,请您重新编写一个示例,说明如何将此解决方案与我的http请求上下文连接起来。我不知道如何将HTTP请求中的管道()与解决方案中的管道结合起来。如何将其组织在一个链中。
.pipe(
   switchMap(timer$),
   tap(()=>cached$=null)
) 
interval(10000).pipe( 
  tap(x => this.cache$ = null)
).subscribe();