这有效:
this.http.get('/doesntexist1')
.finally(() => console.log('finally1'))
.subscribe(() => { });
但这不是:
const obs = this.http.get('/doesntexist2');
obs.finally(() => console.log('finally2'))
obs.subscribe(() => { });
这两个网址都会生成404。
我同时运行两个,我只看到控制台中显示“finally1”,任何想法为什么?
答案 0 :(得分:9)
不同之处在于,在第二个示例中,.finally
与.subscribe
不在同一个流中,因为您没有链接它们。
您的第一个示例创建了此流:
get -> finally -> subscribe
您的第二个示例创建了两个分支:
get -> finally
get -> subscribe
最终不会在没有订阅的情况下执行。
如果要构建流,则需要使用前一个运算符的结果来链接运算符。它不像现场操作员。