共享可观察错误处理问题

时间:2016-10-19 18:04:18

标签: angular observable

我试图理解从angular2 http.get()方法返回的Observable的行为。我的相关代码在这里......

let observable = this.http.get(this.url)
if (this.share) {
  observable = observable.share();
}

if (this.firstHandle) {
  observable.subscribe(result => {
    this.result = result._body;
  },
  err => {
    this.error = err;
  });
} else {
  observable.subscribe(result => {
    this.result = result._body;
  });
}

observable.subscribe(result => {
  this.result2 = result._body
},
err => {
  this.error2 = err;
})

如果 this.share 为true且 this.firstHandle 为false,则上述代码的行为与我的预期不符。在第二个订阅调用中未处理该错误。所有其他情况都像我期望的那样。这是显示行为的plunkr。请注意,最后一种情况不会显示来自错误调用的错误。只是想了解原因。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我自己还在学习这个。我正在查看share method in the RxJS library,看起来第一次调用subscribe是它实际创建新订阅的唯一时间。第二次调用subscribe时,它只是共享数据而实际上并没有进行新的订阅。所以我认为这意味着它不会看到第二个订阅中定义的错误处理参数。