Observable终于没有被解雇了

时间:2017-11-15 19:06:48

标签: rxjs angular2-http

这有效:

this.http.get('/doesntexist1')
  .finally(() => console.log('finally1'))
  .subscribe(() => { });

但这不是:

const obs = this.http.get('/doesntexist2');
obs.finally(() => console.log('finally2'))
obs.subscribe(() => { });

这两个网址都会生成404。

我同时运行两个,我只看到控制台中显示“finally1”,任何想法为什么?

1 个答案:

答案 0 :(得分:9)

不同之处在于,在第二个示例中,.finally.subscribe不在同一个流中,因为您没有链接它们。

您的第一个示例创建了此流:

get -> finally -> subscribe

您的第二个示例创建了两个分支:

get -> finally
get -> subscribe

最终不会在没有订阅的情况下执行。

如果要构建流,则需要使用前一个运算符的结果来链接运算符。它不像现场操作员。