Observable终于没有被解雇了

ban*_*lit 3 rxjs angular2-http

这有效:

this.http.get('/doesntexist1')
  .finally(() => console.log('finally1'))
  .subscribe(() => { });
Run Code Online (Sandbox Code Playgroud)

但这不是:

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

两个URL都产生404.

我跑两个,我只看到控制台中显示"finally1",任何想法为什么?

byg*_*ace 9

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

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

get -> finally -> subscribe
Run Code Online (Sandbox Code Playgroud)

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

get -> finally
get -> subscribe
Run Code Online (Sandbox Code Playgroud)

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

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