## Defer
直到有觀察者訂閱時才創建Observable,并且為每個觀察者創建一個新的Observable

`Defer`操作符會一直等待直到有觀察者訂閱它,然后它使用Observable工廠方法生成一個Observable。它對每個觀察者都這樣做,因此盡管每個訂閱者都以為自己訂閱的是同一個Observable,事實上每個訂閱者獲取的是它們自己的單獨的數據序列。
在某些情況下,等待直到最后一分鐘(就是知道訂閱發生時)才生成Observable可以確保Observable包含最新的數據。

RxJava將這個操作符實現為 `defer` 方法。這個操作符接受一個你選擇的Observable工廠函數作為單個參數。這個函數沒有參數,返回一個Observable。
`defer`方法默認不在任何特定的調度器上執行。
* Javadoc: [`defer(Func0)`](http://reactivex.io/RxJava/javadoc/rx/Observable.html#defer(rx.functions.Func0))
### switchCase

可選包 `rxjava-computation-expressions` 中有一個類似的操作符。`switchCase`操作符有條件的創建并返回一個可能的Observables集合中的一個。

可選包 `rxjava-computation-expressions` 中還有一個更簡單的操作符叫`ifThen`。這個操作符檢查某個條件,然后根據結果,返回原始Observable的鏡像,或者返回一個空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模塊
- 參與開發
- 補充閱讀材料