实时计数在rx中发出的元素

Max*_*aic 3 reactive-programming system.reactive rx-java rx-android

有没有办法计算RxAndroid中已经在流中处理过的元素数量?

我有类似的东西:

Observable.fromArray(new String[]{"these", "are", "my", "values", "."})
            .map(s -> doSomeCoolStuff(s))
            // ...
            .subscribe(amountOfProcessedItems -> Log.d("test", "" + amountOfProcessedItems));
Run Code Online (Sandbox Code Playgroud)

我正在寻找一些东西,以便我的输出看起来像1 2 3 4 5,基本上每个项目后计算已经发出的项目数量.

Tas*_*kos 9

只计算元素:

AtomicInteger counter = new AtomicInteger();
Observable.fromArray(new String[]{"these", "are", "my", "values", "."})
        .map(s -> doSomeCoolStuff(s))
        // ...
        .subscribe(dummy -> Log.d("test", "" + counter.incrementAndGet()));
Run Code Online (Sandbox Code Playgroud)

编辑:如果您只想将元素转换为增加的整数,请按以下步骤操作:

sourceOservable
.zipWith(Observable.range(0, Integer.MAX_VALUE), (any, counter) -> counter)
.whatever(...)
Run Code Online (Sandbox Code Playgroud)