如何在不使用HTTP方法的情况下向订阅者发送数据?

时间:2018-04-27 18:01:56

标签: angular rxjs reactive-programming

我在我的应用中有这个代码:

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

1 个答案:

答案 0 :(得分:2)

您可以使用静态of运算符创建一个发出提供值的observable(如果传递多个参数,则按顺序排列值),然后完成。

示例:

...
if (this.currentList !== undefined) {
  return Observable.of(this.currentList);
}
...

以下是一些文档:reactivex.iolearn-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?