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

startWith()

For a given Observable<T>, the startWith() operator allows you to insert a T emission that precedes all the other emissions. For instance, if we have an Observable<String>that emits items on a menu we want to print, we can use startWith() to append a title header first:

import io.reactivex.Observable;

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

Observable<String> menu =
Observable.just("Coffee", "Tea", "Espresso", "Latte");

//print menu
menu.startWith("COFFEE SHOP MENU")
.subscribe(System.out::println);

}
}

The output of the preceding code snippet is as follows:

COFFEE SHOP MENU
Coffee
Tea
Espresso
Latte

If you want to start with more than one emission, use startWithArray() to accept varargs parameters. If we want to add a divider between our header and menu items, we can start with both the header and divider as emissions:

import io.reactivex.Observable;

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

Observable<String> menu =
Observable.just("Coffee", "Tea", "Espresso", "Latte");

//print menu
menu.startWithArray("COFFEE SHOP MENU","----------------")
.subscribe(System.out::println);

}
}

The output of the preceding code snippet is as follows:

COFFEE SHOP MENU
----------------
Coffee
Tea
Espresso
Latte

The startWith() operator is helpful for cases like this, where we want to seed an initial value or precede our emissions with one or more emissions.

If you want an entire emissions of Observable to precede emissions of another  Observable, you will want to use Observable.concat() or concatWith(), which we will cover in the next chapter.
主站蜘蛛池模板: 景德镇市| 苏尼特右旗| 彭阳县| 什邡市| 北安市| 朝阳市| 东丰县| 马尔康县| 拜泉县| 阜平县| 卢氏县| 唐海县| 黑山县| 枣庄市| 宁乡县| 江北区| 香港| 常山县| 蒲江县| 思南县| 北川| 喀喇| 奇台县| 正宁县| 尼勒克县| 将乐县| 广宗县| 库尔勒市| 监利县| 泌阳县| 延吉市| 新建县| 光泽县| 苗栗县| 茂名市| 岳阳县| 繁昌县| 大埔区| 新昌县| 屏边| 永定县|