【发布时间】:2018-03-27 19:56:36
【问题描述】:
我是 Angular 的新手,我遵循的教程使用术语“Observable”。导师解释过,但我没完全明白。
什么是Observable,为什么我们总是要调用observable.subscribe()?
subscribe() 究竟做了什么?
【问题讨论】:
标签: angular rxjs observable rxjs5
我是 Angular 的新手,我遵循的教程使用术语“Observable”。导师解释过,但我没完全明白。
什么是Observable,为什么我们总是要调用observable.subscribe()?
subscribe() 究竟做了什么?
【问题讨论】:
标签: angular rxjs observable rxjs5
Observable?可以将 Observable 视为数据源。该数据可能存在(或不存在)并且可能随时间变化(或不存在)。
一个 Observable 发出数据,直到它不再发出任何东西,然后完成(有些 Observable 永远不会完成)或抛出异常(错误处理是 Observable 组合的重要组成部分)。
您可以组合这些数据源或使用map、merge、switchMap 等运算符更改发出的数据。因此,数据源可以是另一个数据源的更改或组合许多其他人。
正如我所说,Observable 是一个来源,如果您想使用来自该来源的数据,您需要将subscribe() 发送到Observable,然后您会收到任何发出数据的通知。
Observable
有两种 Observable:冷的和热的。
大多数时候,你必须处理冷的 Observables(AJAX 请求),这就是你需要订阅它们的原因,没有这个订阅你只定义一个数据源,然后永远不会触发请求。
让我们用视频比喻来思考Observable:
Observable 就像一个 VOD 服务:当你要求它时播放视频 (subscribe())。Observable 就像普通电视一样:播放视频时不考虑是否有人要求。ConnectableObservable:暖暖冷Observables什么? ConnectableObservable?你说只有两种 Observable。你是骗子!
不是真的; ConnectableObservables 是 Observables,只要你调用他们的 connect() 方法就会发出数据。换句话说,只要你调用connect() 方法,这个 Observable 就会变得很热。
您可以使用一些运算符(如publish())将冷的Observable 变成ConnectableObservable。
【讨论】:
subscribe() 方法? observable.subscribe(observer) 对我来说听起来很愚蠢。应该是add_observer(),不是吗?
subscribe() 属于 Observable,而不是 Observer,这很奇怪。
Observable 独立于 Angular。它为您提供了一种处理异步流的便捷方式。 Angular 使用它。
所以你需要学习的是反应式编程是如何工作的。一个回复解释太复杂了,但是你有很多关于 rxjs 的内容。
我最先阅读的一篇文章是The introduction to Reactive Programming you've been missing,我认为这是对反应式编程的一个很好的介绍。
【讨论】: