subscribe 做什么,它与 Observable 有什么关系?
What does subscribe do, and how it is related to Observable?
我是 Angular 的新手,我遵循的教程中有术语“Observable
”。导师解释了,我没完全听懂
什么是 Observable
,为什么我们总是要调用 observable.subscribe()
?
subscribe()
实际上是做什么的?
Observable 独立于 Angular。它为您提供了一种处理异步流的便捷方式。 Angular 使用它。
所以你需要学习的是响应式编程是如何工作的。太复杂了,无法在一个回复中解释清楚,但是你已经掌握了很多关于 rxjs 的内容。
我最先读到的是这个 post The introduction to Reactive Programming you've been missing,我认为这是对响应式编程的一个很好的介绍。
什么是 Observable
?
一个Observable可以看作是一个数据源。该数据可能存在(或不存在)并且可能随时间变化(或不变化)。
一个 Observable 发射数据,直到它不再发射数据然后完成(有些 Observable 永远不会完成)或抛出异常(错误处理是 Observable
组合的重要组成部分)。
您可以组合这些数据源或使用 map
、merge
、switchMap
等运算符更改发出的数据。因此,数据源可以是一种更改另一个数据源或许多其他数据源的组合。
正如我所说,Observable
是一个来源,如果你想使用来自该来源的数据,你需要 subscribe()
到 Observable
然后你会收到通知发出的任何数据。
热与冷 Observable
有两种 Observable:冷的和热的。
- Cold Observables:这些 Observables 在您订阅它们之前不会发出数据,基本上,数据在您请求之前不存在(例如 Ajax请求)。
- Hot Observables:这些开始发射而不关心是否有订阅者在等待数据。
大多数时候,你必须处理冷 Observables(AJAX 请求),这就是你需要订阅它们的原因,没有这个订阅你只定义一个数据源,然后永远不会触发请求。
所以让我们用视频来比喻Observable
:
- 感冒
Observable
就像一个VOD服务:当你要求时播放视频(subscribe()
)。
- 热门
Observable
就像普通电视:播放视频时不考虑是否有人要求。
ConnectableObservable
: 暖寒Observable
s
什么? ConnectableObservable
?你说只有两种 Observable。你在说谎!
不是真的; ConnectableObservable
是 Observable
,只要您调用它们的 connect()
方法就会发出数据。换句话说,这个 Observable 会在你调用 connect()
方法后立即变热。
您可以使用一些运算符(例如 publish()
)将感冒 Observable
变成 ConnectableObservable
。
我是 Angular 的新手,我遵循的教程中有术语“Observable
”。导师解释了,我没完全听懂
什么是 Observable
,为什么我们总是要调用 observable.subscribe()
?
subscribe()
实际上是做什么的?
Observable 独立于 Angular。它为您提供了一种处理异步流的便捷方式。 Angular 使用它。
所以你需要学习的是响应式编程是如何工作的。太复杂了,无法在一个回复中解释清楚,但是你已经掌握了很多关于 rxjs 的内容。
我最先读到的是这个 post The introduction to Reactive Programming you've been missing,我认为这是对响应式编程的一个很好的介绍。
什么是 Observable
?
一个Observable可以看作是一个数据源。该数据可能存在(或不存在)并且可能随时间变化(或不变化)。
一个 Observable 发射数据,直到它不再发射数据然后完成(有些 Observable 永远不会完成)或抛出异常(错误处理是 Observable
组合的重要组成部分)。
您可以组合这些数据源或使用 map
、merge
、switchMap
等运算符更改发出的数据。因此,数据源可以是一种更改另一个数据源或许多其他数据源的组合。
正如我所说,Observable
是一个来源,如果你想使用来自该来源的数据,你需要 subscribe()
到 Observable
然后你会收到通知发出的任何数据。
热与冷 Observable
有两种 Observable:冷的和热的。
- Cold Observables:这些 Observables 在您订阅它们之前不会发出数据,基本上,数据在您请求之前不存在(例如 Ajax请求)。
- Hot Observables:这些开始发射而不关心是否有订阅者在等待数据。
大多数时候,你必须处理冷 Observables(AJAX 请求),这就是你需要订阅它们的原因,没有这个订阅你只定义一个数据源,然后永远不会触发请求。
所以让我们用视频来比喻Observable
:
- 感冒
Observable
就像一个VOD服务:当你要求时播放视频(subscribe()
)。 - 热门
Observable
就像普通电视:播放视频时不考虑是否有人要求。
ConnectableObservable
: 暖寒Observable
s
什么? ConnectableObservable
?你说只有两种 Observable。你在说谎!
不是真的; ConnectableObservable
是 Observable
,只要您调用它们的 connect()
方法就会发出数据。换句话说,这个 Observable 会在你调用 connect()
方法后立即变热。
您可以使用一些运算符(例如 publish()
)将感冒 Observable
变成 ConnectableObservable
。