【问题标题】:Identify which element is currently processed识别当前正在处理的元素
【发布时间】:2018-11-12 14:41:51
【问题描述】:

我想知道如何确定当前正在处理数组中的哪个元素。例如 我想打印以下内容:

e
1
Element1 consumed
e
2
Element2 consumed
e
3
Element2 consumed

请问如何修改以下代码以达到给定的结果。

代码

public static void main(String[] args) {
    Observable<String> stringObservable = Observable.just("e1", "e2", "e3");
    stringObservable
    .map(x->x.split(""))//return non-observable
    .flatMap(y->Observable.fromArray(y)//return observable
            .map(n->n))
    .observeOn(Schedulers.io())
    .blockingSubscribe(getObserver());
}

【问题讨论】:

    标签: java java-8 observable rx-java2


    【解决方案1】:

    在拆分源项目的内部序列上使用doOnNextdoOnComplete

    public static void main(String[] args) {
        Observable<String> stringObservable = Observable.just("e1", "e2", "e3");
    
        stringObservable
        .flatMap(x ->
            Observable.fromArray(x.split(""))
            .doOnNext(n -> 
                System.out.println(n)) // <-------------------- prints each split item
            .map(n->n)
            .doOnComplete(() -> 
                System.out.println(
                   "Element " + x + " consumed")) // <--------- end of processing of x
        )
        .observeOn(Schedulers.io())
        .blockingSubscribe(getObserver());
    }
    

    【讨论】:

      【解决方案2】:

      你可能想看看 doOnEach 运算符,你可以在那里打印 http://reactivex.io/RxJava/javadoc/rx/Observable.html#doOnEach(rx.functions.Action1)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-06-28
        • 1970-01-01
        • 1970-01-01
        • 2015-04-29
        • 2011-09-25
        • 2023-04-06
        • 1970-01-01
        相关资源
        最近更新 更多