javascript - Angular - 检测两个订阅何时更新

标签 javascript angular typescript promise subscribe

在一个组件中,在 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/

相关文章:

javascript - 我无法停止 Jquery 中的 setInterval

javascript - 从 Jenkins 下载 zip

angular - Angular2 中没有指令的事件传播

javascript - Angular2 RouterLinking 在一个地方工作,而不是在另一个地方

javascript - 在 Typescript/ECMAScript 特性中设置

javascript - 验证输入的数字为整数或 "half"

javascript - 未捕获的 FirebaseError : Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App. 初始化应用程序()(应用程序/无应用程序)

javascript - Angular 4 Http POST 不工作

javascript - 类似于带有静态对象的 Typescript 中的数据库,或任何建议

angular - ionic 谷歌地图电容器