代码之家  ›  专栏  ›  技术社区  ›  Piotr Aleksander Chmielowski

当平面图中的一个完成时,使原始的可观测的完成

  •  2
  • Piotr Aleksander Chmielowski  · 技术社区  · 6 年前

    我有一个 Observable 我正在申请 flatMap 操作员。能把这个做成原版吗 可观察的 第二个完成时完成?

    这是密码。

    Observable.never<Int>()
            .startWith(0)
            .doOnComplete { println("Completed") } // Not called.
            .flatMap { Observable.fromArray(1, 2, 3, 4, 5) /* Completes after 5 */ }
            .subscribe(::println)
    

    输出是:

    1
    2
    3
    4
    5
    

    我正在尝试实现以下输出:

    1
    2
    3
    4
    5
    Completed
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Tuby    6 年前

    materialize flatMap onComplete onNext

        Observable.<Integer>never()
                .startWith(0)
                .flatMap(integer -> Observable.range(1, 5)
                        .materialize())
                .takeWhile(notification -> notification.isOnNext())
                .map(notification -> notification.getValue())
                .doOnComplete(() -> System.out.println("Completed"))
                .subscribe(integer -> System.out.println(integer));
    

    1
    2
    3
    4
    5
    Completed