【问题标题】:Observable finally not getting firedObservable 终于没有被解雇
【发布时间】:2017-11-15 19:06:48
【问题描述】:

这行得通:

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

但这不是:

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

两个 URL 都会产生 404。

我都运行了,但我只看到控制台中显示“finally1”,知道为什么吗?

【问题讨论】:

    标签: rxjs angular2-http


    【解决方案1】:

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

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

    get -> finally -> subscribe
    

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

    get -> finally
    get -> subscribe
    

    finally 之后没有订阅就不会执行。

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

    【讨论】:

    • "finally 之后如果没有订阅就不会执行。"你知道这是为什么吗?
    • @Luke 流在未订阅时不会执行。
    猜你喜欢
    • 2020-03-28
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 2016-07-15
    相关资源
    最近更新 更多