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

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.
主站蜘蛛池模板: 沙洋县| 汉阴县| 南皮县| 通道| 澄迈县| 太谷县| 涟水县| 应用必备| 郴州市| 和田县| 金湖县| 昌邑市| 安康市| 馆陶县| 涟水县| 平江县| 丹棱县| 泸水县| 维西| 建平县| 中江县| 瓮安县| 成都市| 信丰县| 赞皇县| 长岭县| 逊克县| 上犹县| 电白县| 安达市| 赣榆县| 罗源县| 靖安县| 三台县| 碌曲县| 平远县| 兴文县| 宜章县| 邹城市| 漯河市| 大埔区|