rxjs - Observable 最终没有被解雇

标签 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(() => { });

两个 URL 都会产生 404。

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

最佳答案

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

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

get -> finally -> subscribe

你的第二个例子创建了两个分支:

get -> finally
get -> subscribe

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

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

关于rxjs - Observable 最终没有被解雇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47315384/

相关文章:

rest - Angular 2如何从后端读取自定义错误消息

authentication - Angular2 auth guard 带有 http 请求和 observables

javascript - 如何根据 RxJs 中的事件有条件地缓冲按键输入

javascript - 如果发出相同的可观察值,则取消延迟

node.js - 如何修复导出 'NotificationKind' 中未找到 'rxjs' 错误

angular - 可观察 map 功能未运行(Angular2,http)

angular - 将 header 附加到所有 Http 请求 -> Angular2

angular - 间隔 Ionic2 或 Angular2 http 请求

javascript - 从 rxjs 订阅返回一个函数

angular - 如何在不重新查询服务器的情况下更新可观察数组中的对象?