官术网_书友最值得收藏!

takeWhile() and skipWhile()

Another variant of the take() operator is the takeWhile() operator, which takes emissions while a condition derived from each emission is true. The following example will keep taking emissions while emissions are less than 5. The moment it encounters one that is not, it will call the onComplete() function and dispose of this:

import io.reactivex.Observable;

public class Launcher {
public static void main(String[] args) {

Observable.range(1,100)
.takeWhile(i -> i < 5)
.subscribe(i -> System.out.println("RECEIVED: " + i));
}
}

The output of the preceding code snippet is as follows:

RECEIVED: 1
RECEIVED: 2
RECEIVED: 3
RECEIVED: 4

Just like the takeWhile() function, there is a skipWhile() function. It will keep skipping emissions while they qualify with a condition. The moment that condition no longer qualifies, the emissions will start going through. In the following code, we skip emissions as long as they are less than or equal to 95. The moment an emission is encountered that does not meet this condition, it will allow all subsequent emissions going forward:

import io.reactivex.Observable;

public class Launcher {
public static void main(String[] args) {

Observable.range(1,100)
.skipWhile(i -> i <= 95)
.subscribe(i -> System.out.println("RECEIVED: " + i));
}
}

The output of the preceding code snippet is as follows:

RECEIVED: 96
RECEIVED: 97
RECEIVED: 98
RECEIVED: 99
RECEIVED: 100
The takeUntil() operator is similar to  takeWhile(), but it accepts another  Observable as a parameter. It will keep taking emissions until that other  Observable pushes an emission. The  skipUntil()  operator has similar behavior. It also accepts another  Observable as an argument but it will keep skipping until the other  Observable emits something. 
主站蜘蛛池模板: 沙坪坝区| 南平市| 红河县| 巫溪县| 高碑店市| 河南省| 加查县| 二手房| 民权县| 佛冈县| 盐边县| 临澧县| 建水县| 拉萨市| 天峻县| 漯河市| 德清县| 禹州市| 临泉县| 东辽县| 棋牌| 西吉县| 西昌市| 余江县| 娄烦县| 洪雅县| 乃东县| 通化县| 汕头市| 巴林右旗| 达尔| 平顶山市| 安西县| 罗源县| 白朗县| 晋城| 廉江市| 栾川县| 平遥县| 庆云县| 新竹县|