在一个组件中,在 ngOnInit() 中我有两个数据服务订阅。一旦两个订阅都返回,我想做一些处理。最好的方法是什么?我可以在每个结束时处理,这似乎有点低效,并且不适用于首先激活的订阅,
谢谢,
组件.TS
ngOnInit()
{
this.dataService.dataA().subscribe((dataAJSON) =>
{
this.dataA= dataAJSON
}
this.dataService.dataB().subscribe((dataBJSON) =>
{
this.dataB= dataBJSON
}
数据服务
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class PMDataService
{
constructor(public http : Http)
{
}
dataA()
{
var dataA: any;
var json;
dataA= this.http.get("./assets/dataa.json")
.map(res => res.json());
return dataA
}
dataB()
{
var dataB: any;
var json;
dataB= this.http.get("./assets/datab.json")
.map(res => res.json());
return dataB
}
}
最佳答案
您可以使用 Observable#forkJoin对 Observable 的作用。当所有 observables 完成时,它发出每个的最后一个值,
Observable.forkJoin(this.dataService.dataA(), this.dataService.dataB())
.subscribe(val => /* val is an array */)
关于javascript - Angular - 检测两个订阅何时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47338271/