订阅做什么,以及它与Observable的关系如何?

Sha*_*ika -3 observable rxjs rxjs5 angular

我是Angular的新手,我所遵循的教程有" Observable".导师解释说,但我并不完全明白.

什么是Observable,为什么我们总是要打电话 observable.subscribe()

什么是subscribe()真正做到?

n00*_*dl3 7

什么是Observable

Observable可以被视为数据源.该数据可能存在(或不存在),并且可能随时间而变化(或不存在).

一个Observable发出数据,直到它没有任何东西可以再发出然后完成(有一些Observable永远不会完成)或抛出一个异常(错误处理是Observable组合的一个重要部分).

您可以结合这些数据源或使用运营商如改变所发出的数据map,merge,switchMap,等等.所以,一个数据源可以是另一个数据源的改变或许多其他的组合.

正如我所说,a Observable是一个来源,如果你想使用来自该来源的数据,你需要到subscribe()那里Observable然后你会收到任何数据的通知.

热与冷 Observable

有两种Observables:冷和热.

  • Cold Observables:那些Observable在你订阅它们之前不会发出数据,基本上,在你要求之前数据不存在(例如Ajax请求).
  • Hot Observables:如果有用户在等待数据,这些可以无需关心就开始发送.

大多数情况下,您必须处理冷Observables(AJAX请求),这就是您需要订阅它们的原因,如果没有此订阅,您只需定义数据源,然后永远不会触发请求.

让我们Observable用视频比喻思考:

  • 感冒Observable就像VOD服务:视频会在您要求时播放(subscribe()).
  • 热门Observable就像普通电视:视频播放时不考虑任何人要求的事实.

ConnectableObservable:暖冷Observable小号

什么?ConnectableObservable?你说只有两种Observable.你是个骗子!

并不是的; ConnectableObservables是Observable在调用connect()方法后立即发出数据的.换句话说,只要调用该connect()方法,此Observable就会变热.

你可以把冷ObservableConnectableObservable使用一些运营商(如publish()).