我尝试将.combineLatest与设定的间隔结合使用,以便每隔5秒发出一个新值。然后我将this.dailyStocks作为输入传递给子组件,但每次传入输入的数据都是相同的,当我在开发工具中查看我的网络选项卡时,我看不到正在进行的其他调用。 / p>
.flatMap(() => {
return Observable.interval(5000).combineLatest(
this.http.getData(args),
this.http.getOtherData(args)
)
})
.subscribe(res => {
this.dailyStocks = res[1];
this.dailyStocks = this.dailyStocks.slice(0)
}
子组件:
@Input('dailyStocks')
set dailyStocks(val: ListSymbolObj[]) {
this._dailyStocks.next(val);
}
get dailyStocks() {
return this._dailyStocks.getValue();
}
ngOnInit() {
this._dailyStocks
.filter(x => x != undefined)
.take(1)
.subscribe(res => {
//res is same
}
}
答案 0 :(得分:2)
要对间隔中的每个值发出请求,您应该这样写:
Observable.interval(5000).switchMap(() =>
Observable.combineLatest(
this.http.getData(args),
this.http.getOtherData(args)
)
)
目前,您的代码没有提供额外的请求,因为它只是将来自所有三个Observable的值组合在一起。它等同于以下代码:
Observable.combineLatest(
Observable.interval(5000),
this.http.getData(args),
this.http.getOtherData(args)
)