## Timeout
對原始Observable的一個鏡像,如果過了一個指定的時長仍沒有發射數據,它會發一個錯誤通知

如果原始Observable過了指定的一段時長沒有發射任何數據,`Timeout`操作符會以一個`onError`通知終止這個Observable。
RxJava中的實現為`timeout`,但是有好幾個變體。

第一個變體接受一個時長參數,每當原始Observable發射了一項數據,`timeout`就啟動一個計時器,如果計時器超過了指定指定的時長而原始Observable沒有發射另一項數據,`timeout`就拋出`TimeoutException`,以一個錯誤通知終止Observable。
這個`timeout`默認在`computation`調度器上執行,你可以通過參數指定其它的調度器。
* Javadoc: [timeout(long,TimeUnit)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#timeout(long,%20java.util.concurrent.TimeUnit))
* Javadoc: [timeout()](http://reactivex.io/RxJava/javadoc/rx/Observable.html#timeout(long,%20java.util.concurrent.TimeUnit,%20rx.Scheduler))

這個版本的`timeout`在超時時會切換到使用一個你指定的備用的Observable,而不是發錯誤通知。它也默認在`computation`調度器上執行。
* Javadoc: [timeout(long,TimeUnit,Observable)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#timeout(long,%20java.util.concurrent.TimeUnit,%20rx.Observable))
* Javadoc: [timeout(long,TimeUnit,Observable,Scheduler)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#timeout(long,%20java.util.concurrent.TimeUnit,%20rx.Observable,%20rx.Scheduler))

這個版本的`timeout`使用一個函數針對原始Observable的每一項返回一個Observable,如果當這個Observable終止時原始Observable還沒有發射另一項數據,就會認為是超時了,`timeout`就拋出`TimeoutException`,以一個錯誤通知終止Observable。
這個`timeout`默認在`immediate`調度器上執行。
* Javadoc: [timeout(Func1)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#timeout(rx.functions.Func1))

這個版本的`timeout`同時指定超時時長和備用的Observable。它默認在`immediate`調度器上執行。
* Javadoc: [timeout(Func1,Observable)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#timeout(rx.functions.Func1,%20rx.Observable))

這個版本的`time`除了給每一項設置超時,還可以單獨給第一項設置一個超時。它默認在`immediate`調度器上執行。
* Javadoc: [timeout(Func0,Func1)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#timeout(rx.functions.Func0,%20rx.functions.Func1))

同上,但是同時可以指定一個備用的Observable。它默認在`immediate`調度器上執行。
* Javadoc: [timeout(Func0,Func1,Observable)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#timeout(rx.functions.Func0,%20rx.functions.Func1,%20rx.Observable))
- ReactiveX
- Observables
- Single
- Subject
- Scheduler
- Operators
- 創建操作
- Create
- Defer
- Empty/Never/Throw
- From
- Interval
- Just
- Range
- Repeat
- Start
- Timer
- 變換操作
- Buffer
- FlatMap
- GroupBy
- Map
- Scan
- Window
- 過濾操作
- Debounce
- Distinct
- ElementAt
- Filter
- First
- IgnoreElements
- Last
- Sample
- Skip
- SkipLast
- Take
- TakeLast
- 結合操作
- And/Then/When
- CombineLatest
- Join
- Merge
- StartWith
- Switch
- Zip
- 錯誤處理
- Catch
- Retry
- 輔助操作
- Delay
- Do
- Materialize/Dematerialize
- ObserveOn
- Serialize
- Subscribe
- SubscribeOn
- TimeInterval
- Timeout
- Timestamp
- Using
- To
- 條件和布爾操作
- All/Contains/Amb
- DefaultIfEmpty
- SequenceEqual
- SkipUntil/SkipWhile
- TakeUntil/TakeWhile
- 算術和聚合操作
- Average/Concat/Reduce
- Max/Min/Count/Sum
- 異步操作
- 連接操作
- Connect
- Publish
- RefCount
- Replay
- 轉換操作
- 阻塞操作
- 字符串操作
- 按字母順序的操作符列表
- RxJava文檔和教程
- RxJava入門指南
- RxJava使用示例
- 實現自定義操作符
- 自定義插件
- Backpressure
- 錯誤處理
- Android模塊
- 參與開發
- 補充閱讀材料