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

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.
主站蜘蛛池模板: 平原县| 施甸县| 福清市| 渝中区| 沛县| 如东县| 阳城县| 福贡县| 三门峡市| 隆回县| 静安区| 竹山县| 长宁县| 若羌县| 民权县| 龙胜| 中西区| 邹城市| 隆昌县| 包头市| 大余县| 庆阳市| 桐柏县| 公主岭市| 缙云县| 麻城市| 宣汉县| 安化县| 洛川县| 柯坪县| 尚义县| 资中县| 湾仔区| 江川县| 朝阳区| 会同县| 江西省| 井冈山市| 横山县| 双鸭山市| 英德市|