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