【问题标题】:2 observables - do something when both of them return data successfully2 observables - 当他们都成功返回数据时做一些事情
【发布时间】:2017-11-29 17:59:33
【问题描述】:
this.pokojeService.pobierzPokoje().subscribe(pokoje => {
  this.pokoje = pokoje;
});
this.pokojeService.pobierzTypyPokoi().subscribe(pokojeTypy => {
  this.pokojeTypy = pokojeTypy;
});

这些是我的 2 个可观察的。 我想迭代 pokoje 和 pokojetypy,但是如果其中一个返回错误而不是数据怎么办? 我想防止这种情况并检查他们是否都成功返回了数据

【问题讨论】:

标签: angular


【解决方案1】:

使用 forkJoin 方法:

Observable.forkJoin(this.pokojeService.pobierzPokoje(), this.pokojeService.pobierzTypyPokoi()).subscribe(response => {
      if(response && response.length === 2){
        let pobierzPokojeResult = response[0];
        let pobierzTypyPokoiResult = response[1];
        // PUT YOUR CODE HERE
      }
    });

【讨论】:

    【解决方案2】:
    const obs1$ =  this.pokojeService.pobierzPokoje()
    obs1$.catch((e: any) => Observable.throw(this.errorHandler(e)))
    
    const obs2$ =  this.pokojeService.pobierzTypyPokoi()
    obs2$.catch((e: any) => Observable.throw(this.errorHandler(e)))
    
    Observable.zip(obs1$,obs2$).subscribe(res=>{
      if(res[0] && res[1]){
        do Something...
      }
    })
    

    您可以过滤响应而不是捕获错误,您可以根据需要转换数据。使用 obs1$.map(data=>....) 如果没有数据或您想要 w/e,请确保返回 false,这应该回答您的问题

    【讨论】:

      猜你喜欢
      • 2012-06-05
      • 2019-12-17
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      相关资源
      最近更新 更多