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",任何想法为什么?
不同之处在于,在第二个示例.finally中,.subscribe由于您没有链接它们,因此它不在同一个流中.
您的第一个示例创建此流:
get -> finally -> subscribe
Run Code Online (Sandbox Code Playgroud)
您的第二个示例创建两个分支:
get -> finally
get -> subscribe
Run Code Online (Sandbox Code Playgroud)
最终不会在没有订阅的情况下执行.
如果要构建流,则需要使用前一个运算符的结果来链接运算符.它不像一个就地操作员.