鍍金池/ 教程/ Android/ Timeout
combineLatest
從列表創(chuàng)建一個Observable
RxJava的與眾不同之處
Schedulers
RxJava觀察者模式工具包
總結(jié)
工具
你什么時候使用觀察者模式?
GroupBy
App架構(gòu)
組合Observables
創(chuàng)建Activity類
StartWith
RX - 從.NET到RxJava
處理耗時的任務(wù)
過濾Observables
向響應(yīng)式世界問好
避免阻塞I/O的操作
Join
有且僅有一次
Schedulers-解決Android主線程問題
轉(zhuǎn)換Observables
啟動引擎
我們的第一個Observable
總結(jié)
StrictMode
Debounce
*map家族
創(chuàng)建RecyclerView Adapter
為什么是Observables?
Merge
再多幾個例子
總結(jié)
Buffer
Window
總結(jié)
Timeout
執(zhí)行網(wǎng)絡(luò)任務(wù)
項目目標
來到Java世界 - Netflix RxJava
獲取我們需要的數(shù)據(jù)
Observable
過濾序列
非阻塞I/O操作
ZIP
總結(jié)
And,Then和When
觀察者模式
Retrofit
Cast
Skip and SkipLast
微軟響應(yīng)式擴展
與REST無縫結(jié)合-RxJava和Retrofit
First and last
RxJava Essentials 中文翻譯版
Switch
ElementAt
總結(jié)
總結(jié)
總結(jié)
Sampling
SubscribeOn and ObserveOn
Subject = Observable + Observer

Timeout

假設(shè)我們工作的是一個時效性的環(huán)境,我們溫度傳感器每秒都在發(fā)射一個溫度值。我們想讓它每隔兩秒至少發(fā)射一個,我們可以使用timeout()函數(shù)來監(jiān)聽源可觀測序列,就是在我們設(shè)定的時間間隔內(nèi)如果沒有得到一個值則發(fā)射一個錯誤。我們可以認為timeout()為一個Observable的限時的副本。如果在指定的時間間隔內(nèi)Observable不發(fā)射值的話,它監(jiān)聽的原始的Observable時就會觸發(fā)onError()函數(shù)。

Subscription subscription = getCurrentTemperature()
    .timeout(2,TimeUnit.SECONDS)
    .subscribe(new Observer<Integer>() {

        @Override
        public void onCompleted() {

        }

        @Override
        public void onError(Throwable e) {
            Log.d("RXJAVA","You should go check the sensor, dude");
        }

        @Override
        public void onNext(Integer currentTemperature) {
            updateDisplay(currentTemperature)
        }
    });

sample()一樣,timeout()使用TimeUnit對象來指定時間間隔。

下圖中展示了一旦Observable超過了限時就會觸發(fā)onError()函數(shù):因為超時后它才到達,所以最后一個元素將不會發(fā)射出去。

http://wiki.jikexueyuan.com/project/rxjava/images/chapter4_14.png" alt="" />