2个observables - 当它们都成功返回数据时执行某些操作

时间:2017-11-29 09:00:05

标签: angular

this.pokojeService.pobierzPokoje().subscribe(pokoje => {
  this.pokoje = pokoje;
});
this.pokojeService.pobierzTypyPokoi().subscribe(pokojeTypy => {
  this.pokojeTypy = pokojeTypy;
});
这些是我的2个可观察者。 我想迭代pokoje和pokojetypy,但如果其中一个返回错误,而不是数据呢? 我想阻止它并检查它们是否都成功返回数据

1 个答案:

答案 0 :(得分:-1)

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,这应该回答你的问题