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

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. 
主站蜘蛛池模板: 竹溪县| 云浮市| 宜春市| 临高县| 定安县| 古田县| 娄底市| 项城市| 静安区| 靖西县| 子长县| 蓬溪县| 临清市| 深水埗区| 青河县| 遂宁市| 盘锦市| 岗巴县| 大余县| 巴里| 汪清县| 民勤县| 南通市| 措美县| 天祝| 休宁县| 连平县| 定西市| 鲜城| 宜兰市| 深水埗区| 万荣县| 特克斯县| 乌兰浩特市| 安化县| 昌图县| 吴旗县| 德庆县| 茶陵县| 新津县| 清丰县|