【发布时间】:2019-03-04 17:21:28
【问题描述】:
我想防止重复的 http 调用。我在一个 observable 上有多个订阅,并且那个 observable 有一个 switchMap 来决定是否会有一个 http 调用:
getModules(): Observable<Module[]> {
return this.modules$.pipe(
switchMap((modules: Module[]) => {
if (!modules) {
return this.setModules(); // http call, returning observable
}
return this.modules$; // observable
})
);
}
然后有多个订阅,在应用程序的不同组件中,调用此方法。如何防止多个 http 调用?我需要延迟调用 http observable,而不是延迟发出的值。
【问题讨论】:
-
是否会在第一次调用之后在组件中设置一个布尔值,然后在执行任何 http 工作之前检查它?
-
你想推迟到什么时候?顺便说一句
shareReplay()和share()所以也许其中一个可以帮助你。 -
@martin 我不想延迟值的发送。如果当前正在进行中,我想阻止 http 调用。我正在尝试像 Lazy Coder 建议的那样。
标签: javascript angular rxjs