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

  • Learning RxJava
  • Thomas Nield
  • 236字
  • 2021-07-02 22:22:58

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.
主站蜘蛛池模板: 抚州市| 淄博市| 融水| 改则县| 福贡县| 黔南| 兴海县| 二连浩特市| 固原市| 象山县| 尚志市| 大同市| 丹阳市| 林西县| 西乌| 白水县| 永昌县| 恩施市| 谷城县| 璧山县| 罗甸县| 和硕县| 河北省| 仁寿县| 平江县| 长海县| 田东县| 察雅县| 温宿县| 新营市| 扶余县| 封丘县| 兰坪| 大同县| 民县| 那曲县| 内黄县| 治县。| 体育| 上饶市| 广昌县|