保證所有的觀察者收到相同的數(shù)據(jù)序列,即使它們在Observable開始發(fā)射數(shù)據(jù)之后才訂閱
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/replay.c.png" alt="replay" />
可連接的Observable (connectable Observable)與普通的Observable差不多,不過它并不會在被訂閱時(shí)開始發(fā)射數(shù)據(jù),而是直到使用了Connect
操作符時(shí)才會開始。用這種方法,你可以在任何時(shí)候讓一個(gè)Observable開始發(fā)射數(shù)據(jù)。
如果在將一個(gè)Observable轉(zhuǎn)換為可連接的Observable之前對它使用Replay
操作符,產(chǎn)生的這個(gè)可連接Observable將總是發(fā)射完整的數(shù)據(jù)序列給任何未來的觀察者,即使那些觀察者在這個(gè)Observable開始給其它觀察者發(fā)射數(shù)據(jù)之后才訂閱。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/replay.png" alt="replay" />
RxJava的實(shí)現(xiàn)為replay
,它有多個(gè)接受不同參數(shù)的變體,有的可以指定replay
的最大緩存數(shù)量,有的還可以指定調(diào)度器。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/replay.f.png" alt="replay" />
有一種 replay
返回一個(gè)普通的Observable。它可以接受一個(gè)變換函數(shù)為參數(shù),這個(gè)函數(shù)接受原始Observable發(fā)射的數(shù)據(jù)項(xiàng)為參數(shù),返回結(jié)果Observable要發(fā)射的一項(xiàng)數(shù)據(jù)。因此,這個(gè)操作符其實(shí)是replay
變換之后的數(shù)據(jù)項(xiàng)。