我的代码有一个_.range()
,当添加新值时会触发一个返回Subject
的HTTP请求。
我想以两种不同的方式处理这些数据(使用相同的数据),并使用存储在Observable
和Observables
中的结果group
作为值{{1}使用times
管道。
虽然这确实有效,但HTTP请求会多次发送 - 我只希望每次订阅都发送一次。
以下是一个最小的例子。
ngFor
实现这一目标的最佳方法是什么?
答案 0 :(得分:4)
您可以使用share
运算符存档您要查找的内容:
import 'rxjs/add/operator/share';
ngOnInit() {
var selections = new Subject<string>();
var appointments = selections
// exampleService.getData returns an HTTP observable.
.switchMap(date => this.exampleService.getData(date))
.share();
var group = appointments
.map(data => this.process(data));
var times = appointments
.map(data => this.calculateTimes(data));
// Calling subscribe each time sends the HTTP request multiple
// times - I only want it to be send once for both of them: they
// can share the data!!
group.subscribe();
times.subscribe();
// selections.next(someData) is called periodically from some
// omitted code.
}
基本上,不同的observers
在其中共享相同的source
。
有关运营商here的更多信息。