我是Angular的新手,我所遵循的教程中使用了术语" Observable
"。导师对此进行了解释,但我并不完全理解。
什么是Observable
,为什么我们总是要拨打observable.subscribe()
?
subscribe()
实际上做了什么?
答案 0 :(得分:6)
Observable
?可以将Observable视为数据源。该数据可能存在(或不存在),并且可能随时间而变化(或不存在)。
Observable发出数据,直到它没有任何内容可以发出然后完成(有一些Observable永远不会完成)或抛出异常(错误处理是Observable
组合的重要部分)。
您可以使用map
,merge
,switchMap
等运算符组合这些数据源或更改发出的数据。因此,数据源可能是另一个数据源的更改数据源或许多其他的组合。
正如我所说,Observable
是来源,如果您想使用该来源的数据,则需要subscribe()
到Observable
,然后您会收到任何通知发出的数据。
Observable
有两种Observables:冷和热。
大多数情况下,您必须处理冷Observable(AJAX请求),这就是您需要订阅它们的原因,如果没有此订阅,您只需定义数据源,然后永远不会触发请求。
因此,让我们用视频比喻来考虑Observable
:
Observable
就像VOD服务:视频会在您要求时播放(subscribe()
)。Observable
就像普通电视一样:视频是在不考虑任何人要求的情况下播放的。ConnectableObservable
:变暖Observable
s 什么? ConnectableObservable
?你说只有两种Observable。你是个骗子!
不是真的; ConnectableObservable
是Observable
,只要您调用connect()
方法,就会发出数据。换句话说,只要您调用connect()
方法,此Observable就会变热。
您可以使用某些操作符(例如Observable
)将感冒ConnectableObservable
变为publish()
。
答案 1 :(得分:0)
Observable独立于Angular。它为您提供了一种处理异步流的便捷方式。而Angular使用它。
所以你需要学习的是反应式编程的工作原理。在一个回复中解释它太复杂了,但你有很多关于rxjs的内容。
我读到的第一篇文章是The introduction to Reactive Programming you've been missing,我认为这是对反应式编程的一个很好的介绍。