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();