對原始Observable的一個鏡像,如果過了一個指定的時長仍沒有發(fā)射數(shù)據(jù),它會發(fā)一個錯誤通知
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/timeout.c.png" alt="Timeout" />
如果原始Observable過了指定的一段時長沒有發(fā)射任何數(shù)據(jù),Timeout操作符會以一個onError通知終止這個Observable。
RxJava中的實現(xiàn)為timeout,但是有好幾個變體。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/timeout.1.png" alt="Timeout" />
第一個變體接受一個時長參數(shù),每當(dāng)原始Observable發(fā)射了一項數(shù)據(jù),timeout就啟動一個計時器,如果計時器超過了指定指定的時長而原始Observable沒有發(fā)射另一項數(shù)據(jù),timeout就拋出TimeoutException,以一個錯誤通知終止Observable。
這個timeout默認(rèn)在computation調(diào)度器上執(zhí)行,你可以通過參數(shù)指定其它的調(diào)度器。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/timeout.2.png" alt="Timeout" />
這個版本的timeout在超時時會切換到使用一個你指定的備用的Observable,而不是發(fā)錯誤通知。它也默認(rèn)在computation調(diào)度器上執(zhí)行。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/timeout.3.png" alt="Timeout" />
這個版本的timeout使用一個函數(shù)針對原始Observable的每一項返回一個Observable,如果當(dāng)這個Observable終止時原始Observable還沒有發(fā)射另一項數(shù)據(jù),就會認(rèn)為是超時了,timeout就拋出TimeoutException,以一個錯誤通知終止Observable。
這個timeout默認(rèn)在immediate調(diào)度器上執(zhí)行。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/timeout.4.png" alt="Timeout" />
這個版本的timeout同時指定超時時長和備用的Observable。它默認(rèn)在immediate調(diào)度器上執(zhí)行。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/timeout.5.png" alt="Timeout" />
這個版本的time除了給每一項設(shè)置超時,還可以單獨給第一項設(shè)置一個超時。它默認(rèn)在immediate調(diào)度器上執(zhí)行。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/timeout.6.png" alt="Timeout" />
同上,但是同時可以指定一個備用的Observable。它默認(rèn)在immediate調(diào)度器上執(zhí)行。