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

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. 
主站蜘蛛池模板: 乌海市| 象山县| 涿州市| 蒲城县| 康定县| 灵丘县| 永城市| 兴仁县| 台南市| 沂南县| 宜兰县| 汝南县| 高尔夫| 铁力市| 探索| 青浦区| 彰化市| 宣汉县| 石狮市| 兰考县| 芦溪县| 宜兰县| 阜南县| 望都县| 太康县| 望奎县| 博乐市| 临澧县| 佳木斯市| 凤山市| 郓城县| 凌源市| 乐至县| 临海市| 宝坻区| 巴塘县| 苍溪县| 治多县| 金堂县| 蕲春县| 茂名市|