如果原始Observable过了指定的一段时长没有发射任何数据,操作符会以一个onError通知终止这个Observable。

    RxJava中的实现为timeout,但是有好几个变体。

    Timeout

    第一个变体接受一个时长参数,每当原始Observable发射了一项数据,timeout就启动一个计时器,如果计时器超过了指定指定的时长而原始Observable没有发射另一项数据,timeout就抛出TimeoutException,以一个错误通知终止Observable。

    这个版本的timeout在超时时会切换到使用一个你指定的备用的Observable,而不是发错误通知。它也默认在computation调度器上执行。

    • Javadoc: )

    Timeout

    这个版本的timeout使用一个函数针对原始Observable的每一项返回一个Observable,如果当这个Observable终止时原始Observable还没有发射另一项数据,就会认为是超时了,timeout就抛出,以一个错误通知终止Observable。

    这个timeout默认在immediate调度器上执行。

    这个版本的timeout同时指定超时时长和备用的Observable。它默认在immediate调度器上执行。

    这个版本的time除了给每一项设置超时,还可以单独给第一项设置一个超时。它默认在调度器上执行。

    • Javadoc: )

    Timeout

    同上,但是同时可以指定一个备用的Observable。它默认在immediate调度器上执行。