Angular 为什么httpClient返回的是可观察的而不是承诺?

Angular 为什么httpClient返回的是可观察的而不是承诺?,angular,rxjs,observable,angular7,Angular,Rxjs,Observable,Angular7,我制作了一个spring反应式后端,它返回Flux对象。当我用angular调用服务并订阅返回的observable时。结果永远不会被触发。那么,如果只有一个响应是可能的,为什么返回的是可观察的而不是承诺呢?我已经用硬编码的nodeJS-SSE服务尝试了同样的方法。我得到了相同的结果,但它在事件源中运行良好。我的问题可能很奇怪,但Observable不是偶然选择的,所以我的理解肯定是错误的,我想理解。Angular httpclient将始终返回Observable(RXjs),promise在

我制作了一个spring反应式后端,它返回Flux对象。当我用angular调用服务并订阅返回的observable时。结果永远不会被触发。那么,如果只有一个响应是可能的,为什么返回的是可观察的而不是承诺呢?我已经用硬编码的nodeJS-SSE服务尝试了同样的方法。我得到了相同的结果,但它在事件源中运行良好。我的问题可能很奇怪,但Observable不是偶然选择的,所以我的理解肯定是错误的,我想理解。

Angular httpclient将始终返回Observable(RXjs),promise在新的Angular版本中被弃用,您需要订阅Observable

欲了解更多信息,请阅读
要了解更多关于可观察对象的信息,请检查您是否是Rxjs新手。检查可观察对象与发出HTTP请求时的承诺相比,有几个优点:

  • 重试失败的请求(
    Retry
    retryWhen
  • 取消不必要的/过时的请求(
    switchMap
    unsubscribe
    …)
  • 更好的错误处理
  • 轻松组合多个HTTP调用,并控制如何执行它们(例如,逐个或并行)

只需一次响应,可观察到的物体就可以完美地工作。为什么不呢?我的问题不清楚对不起。我想知道如果它只能被触发一次,它的可观察性如何?它毫无疑问地增加了复杂性。一个发出单个值并完成的可观察对象并不比一个承诺更复杂。有了一个你不必取消订阅的承诺,只需要一个响应。对我来说,可观察的事物就像一个队列。它用于发送消息,并在发送消息时执行某些操作。您也不必取消订阅完成的可观察对象。我知道这一点。但是,如果一个可观测对象只能触发一次,那么为什么要使用可观测对象呢?@Pred05我建议您阅读rxjs可观测模式的实际工作原理。这可能是一个略微陡峭的学习曲线,但它是值得的:)它与SSE一起工作?@Pred05订阅observable就像订阅杂志一样,它会继续寻找变化承诺总是返回成功的拒绝,订阅observable意味着继续寻找对observable的变化有意义吗?我也编辑了我的帖子