我试图理解从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。请注意,最后一种情况不会显示来自错误调用的错误。只是想了解原因。
提前致谢。
答案 0 :(得分:0)
我自己还在学习这个。我正在查看share method in the RxJS library,看起来第一次调用subscribe是它实际创建新订阅的唯一时间。第二次调用subscribe时,它只是共享数据而实际上并没有进行新的订阅。所以我认为这意味着它不会看到第二个订阅中定义的错误处理参数。