# Delay
延遲一段指定的時間再發射來自Observable的發射物

`Delay`操作符讓原始Observable在發射每項數據之前都暫停一段指定的時間段。效果是Observable發射的數據項在時間上向前整體平移了一個增量。
RxJava的實現是 `delay`和`delaySubscription`。

第一種`delay`接受一個定義時長的參數(包括數量和單位)。每當原始Observable發射一項數據,`delay`就啟動一個定時器,當定時器過了給定的時間段時,`delay`返回的Observable發射相同的數據項。
注意:`delay`不會平移`onError`通知,它會立即將這個通知傳遞給訂閱者,同時丟棄任何待發射的`onNext`通知。然而它會平移一個`onCompleted`通知。
`delay`默認在`computation`調度器上執行,你可以通過參數指定使用其它的調度器。
* Javadoc: [delay(long,TimeUnit)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#delay(long,%20java.util.concurrent.TimeUnit))
* Javadoc: [delay()](http://reactivex.io/RxJava/javadoc/rx/Observable.html#delay(long,%20java.util.concurrent.TimeUnit,%20rx.Scheduler))

另一種`delay`不實用常數延時參數,它使用一個函數針對原始Observable的每一項數據返回一個Observable,它監視返回的這個Observable,當任何那樣的Observable終止時,`delay`返回的Observable就發射關聯的那項數據。
這種`delay`默認不在任何特定的調度器上執行。
* Javadoc: [delay(Func1)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#delay(rx.functions.Func1))

這個版本的`delay`對每一項數據使用一個Observable作為原始Observable的延時定時器。
這種`delay`默認不在任何特定的調度器上執行。
* Javadoc: [delay(Func0,Func1)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#delay(rx.functions.Func0,%20rx.functions.Func1))

還有一個操作符`delaySubscription`讓你你可以延遲訂閱原始Observable。它結合搜一個定義延時的參數。
`delaySubscription`默認在`computation`調度器上執行,你可以通過參數指定使用其它的調度器。
* Javadoc: [delaySubscription(long,TimeUnit)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#delaySubscription(long,%20java.util.concurrent.TimeUnit))
* Javadoc: [delaySubscription(long,TimeUnit,Scheduler)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#delaySubscription(long,%20java.util.concurrent.TimeUnit,%20rx.Scheduler))

還有一個版本的`delaySubscription`使用一個Obseable而不是一個固定的時長來設置訂閱延時。
這種`delaySubscription `默認不在任何特定的調度器上執行。
* Javadoc: [delaySubscription(Func0)](http://reactivex.io/RxJava/javadoc/rx/Observable.html#delaySubscription(rx.functions.Func0))
- 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模塊
- 參與開發
- 補充閱讀材料