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

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. 
主站蜘蛛池模板: 承德市| 安丘市| 高雄县| 鱼台县| 紫阳县| 石嘴山市| 连南| 华亭县| 始兴县| 忻州市| 嵊州市| 台湾省| 南通市| 邹城市| 尉氏县| 开封市| 张北县| 德阳市| 清新县| 鲜城| 惠来县| 独山县| 平潭县| 邛崃市| 兴隆县| 泗洪县| 寻乌县| 竹山县| 麻栗坡县| 塘沽区| 衡阳市| 饶平县| 遂溪县| 开封市| 东丰县| 晋江市| 西平县| 荆州市| 贵溪市| 嘉兴市| 额尔古纳市|