延遲一段指定的時(shí)間再發(fā)射來(lái)自O(shè)bservable的發(fā)射物
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/delay.c.png" alt="delay" />
Delay
操作符讓原始Observable在發(fā)射每項(xiàng)數(shù)據(jù)之前都暫停一段指定的時(shí)間段。效果是Observable發(fā)射的數(shù)據(jù)項(xiàng)在時(shí)間上向前整體平移了一個(gè)增量。
RxJava的實(shí)現(xiàn)是 delay
和delaySubscription
。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/delay.png" alt="delay" />
第一種delay
接受一個(gè)定義時(shí)長(zhǎng)的參數(shù)(包括數(shù)量和單位)。每當(dāng)原始Observable發(fā)射一項(xiàng)數(shù)據(jù),delay
就啟動(dòng)一個(gè)定時(shí)器,當(dāng)定時(shí)器過(guò)了給定的時(shí)間段時(shí),delay
返回的Observable發(fā)射相同的數(shù)據(jù)項(xiàng)。
注意:delay
不會(huì)平移onError
通知,它會(huì)立即將這個(gè)通知傳遞給訂閱者,同時(shí)丟棄任何待發(fā)射的onNext
通知。然而它會(huì)平移一個(gè)onCompleted
通知。
delay
默認(rèn)在computation
調(diào)度器上執(zhí)行,你可以通過(guò)參數(shù)指定使用其它的調(diào)度器。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/delay.o.png" alt="delay" />
另一種delay
不實(shí)用常數(shù)延時(shí)參數(shù),它使用一個(gè)函數(shù)針對(duì)原始Observable的每一項(xiàng)數(shù)據(jù)返回一個(gè)Observable,它監(jiān)視返回的這個(gè)Observable,當(dāng)任何那樣的Observable終止時(shí),delay
返回的Observable就發(fā)射關(guān)聯(lián)的那項(xiàng)數(shù)據(jù)。
這種delay
默認(rèn)不在任何特定的調(diào)度器上執(zhí)行。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/delay.oo.png" alt="delay" />
這個(gè)版本的delay
對(duì)每一項(xiàng)數(shù)據(jù)使用一個(gè)Observable作為原始Observable的延時(shí)定時(shí)器。
這種delay
默認(rèn)不在任何特定的調(diào)度器上執(zhí)行。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/delaySubscription.png" alt="delay" />
還有一個(gè)操作符delaySubscription
讓你你可以延遲訂閱原始Observable。它結(jié)合搜一個(gè)定義延時(shí)的參數(shù)。
delaySubscription
默認(rèn)在computation
調(diào)度器上執(zhí)行,你可以通過(guò)參數(shù)指定使用其它的調(diào)度器。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/delaySubscription.o.png" alt="delay" />
還有一個(gè)版本的delaySubscription
使用一個(gè)Obseable而不是一個(gè)固定的時(shí)長(zhǎng)來(lái)設(shè)置訂閱延時(shí)。
這種delaySubscription
默認(rèn)不在任何特定的調(diào)度器上執(zhí)行。