我在我的应用中有这个代码:
call_user_func_array
我希望这个列表只从我的后端加载一次。所以我需要检查 public requestList(): Observable<Record[]> {
return this.http.get(this.requestUrl)
.map((response: any) => this.currentList = response.json())
.catch(this.setError);
}
是否已经填满。如果是这样,我必须忽略currentList
并手动将http.get()
内容返回给订阅者,透明地就像他从后端获取它一样。我怎样才能做到这一点?
currentList
答案 0 :(得分:2)
您可以使用静态of
运算符创建一个发出提供值的observable(如果传递多个参数,则按顺序排列值),然后完成。
示例:
...
if (this.currentList !== undefined) {
return Observable.of(this.currentList);
}
...
以下是一些文档:reactivex.io,learn-rxjs
使用do/tap
运算符来修改流之外的某些内容可能更合适,因为您并不打算从map
返回不同的值。< / p>
示例:
...
return this.http.get(this.requestUrl)
.do((response: any) => this.currentList = response.json())
...
以下是一些文档:learn-rxjs
发现了另一篇类似的文章,涉及避免重复的飞行中请求,但也解决了缓存问题。因此,有关该主题的更多讨论,您可能需要查看它: What is the correct way to share the result of an Angular Http network call in RxJs 5?