- 號RxJS是函數式編程的近親,這意味着突變通常是一大禁忌。流數據的全部要點是避免狀態變化,這在許多方面是當今應用中許多麻煩的根源。
所有觀察對象都會包裝各種數據源類型,以便它們通過通用接口發出事件。因此Rx.Observable.fromArray
和Rx.Observable.fromPromise
都會生成具有相同語義的Observable,唯一的區別是事件的數量和生成這些事件的時間。
Observables
懶惰,所有花哨方法鏈接不會做任何事情,直到可觀察最終訂閱。因此,subscribe
實際上就像是說「執行」或「去」,它將允許事件開始移動通過Observable。
不知道你的「觀察數據陣」的意思,見點1.如果您通過數組可觀察到的,那麼你應該能夠檢查的是
一點也沒有大小」 t,但是在某種意義上,您可以通過簡單地重新訂閱來「重新填充」基於Array的Observable,這將開始再次發送事件的過程。正如dvlsg提到的,你也可以使用Subject
來明確地將事件推送到觀察者,但在99%的情況下,它的使用可以並且應該避免,因爲它被用作柺杖以避免實際上成爲反應性
即
var source = Rx.Observable.fromArray([1, 2, 3, 4]);
//First subscription, prints all of the events from array
source.subscribe(x => console.log(x));
//Second subscription, prints all the events *again* because
//this is a new subscription occurrence
source.subscribe(y => console.log(y));
不知道的人,但2不工作,因爲#訂閱的'()的返回'是類型'Subscription',其中不呼籲'#方法訂閱()'。爲了這個工作,'#subscribe()'必須再次返回Observable,這實際上並不合理。您應該將'.subscribe()'調用移到他們自己的行,而不是將它們鏈接在一起。哦,對於#4,你可以使用[Subject](https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/subjects.md)。 – dvlsg
有用的信息+1 – Shawn