当前位置: 首页 > 知识库问答 >
问题:

RxJS Ab(使用)Observables的map函数[副本]

宗政燕七
2023-03-14

在我的Angular2设置中,我有一个调用服务方法的组件。服务方法返回一个可观察对象,组件订阅它。

由于我希望服务缓存最近的调用,因此我会使用 map 函数拦截可观察量中的数据。示例服务方法如下所示

provideData():Observable<Data> {
  return this.http.get(url).
    map(resp => resp.json()).
    map(data => { 
          this.cachedData = _.cloneDeep(data);
          return data;
    }
}

这种方法对我有用,但是,我不确定我是否不滥用不映射任何内容的地图功能。它只是一个拦截器来保存数据。有没有更好或更推荐的方法?

PS.:这不一定是关于缓存,而是将map函数用于非映射操作的适当用法。在这个问题上,Günter被广泛认可的答案实际上做了同样的事情,并使用地图来做到这一点。另一方面,用户olsn在评论中表示这样做会更合适。

共有1个答案

商风华
2023-03-14

< code>PublishReplay使您的流与多播兼容,并缓存源文件。

provideData():Observable<Data> {
  return this.http.get(url)
    .map(resp => resp.json())
    .publishReplay();
}

要详细解释这个操作符是如何工作的,可以看看如何创建一个懒惰的、缓存的、只执行一次源代码的可观察对象

 类似资料:
  • 我有一个数组,我需要用map函数循环,并像

  • KnockoutJS基于以下3个重要概念。 它们之间的可观察性和依赖性跟踪 - DOM元素通过“data-bind”连接到ViewModel。 他们通过Observables交换信息。 这会自动处理依赖关系跟踪。 UI和ViewModel之间的声明性绑定 - DOM元素通过“data-bind”概念连接到ViewModel。 模板化以创建可重用的组件 - 模板化提供了一种创建复杂Web应用程序的可

  • Observable 有冷热两种类型。我们先来看看什么是冷的 observable 。如果是冷的 observable 的话,那么两个订阅者得到值是两份完全相同的副本,示例如下: // 冷的 observable 示例 let stream$ = Rx.Observable.of(1,2,3); //订阅者 1: 1,2,3 stream.subscribe( data => console

  • 本文向大家介绍Python中的map()函数和reduce()函数的用法,包括了Python中的map()函数和reduce()函数的用法的使用技巧和注意事项,需要的朋友参考一下 Python内建了map()和reduce()函数。 如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大

  • 问题内容: 为什么下面的代码不打印任何内容: 我正在Python 3中执行上述代码。我想我缺少了一些非常基本的东西,但无法弄清楚。 问题答案: 返回iterator,直到您要求它之前,它不会处理元素。 将其变成列表以强制处理所有元素: 或将其长度设置为0以不产生列表(如果不需要地图输出): 但是请注意,对于任何以后的代码维护者而言,简单地使用循环都更具可读性: