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

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.
主站蜘蛛池模板: 河曲县| 南澳县| 霍邱县| 师宗县| 油尖旺区| 大宁县| 澄迈县| 泌阳县| 长海县| 二连浩特市| 乌审旗| 辽宁省| 贵阳市| 泰州市| 固原市| 桑植县| 额敏县| 宁都县| 伊通| 鹤壁市| 峨山| 乐安县| 日土县| 崇左市| 南投县| 淮安市| 故城县| 九台市| 沂水县| 永新县| 长岛县| 扬中市| 吴江市| 漳平市| 万载县| 夏邑县| 伊川县| 荆州市| 灵寿县| 家居| 军事|