实时计数 rx 中发出的元素
Live count emitted elements in rx
有什么方法可以计算 RxAndroid 流中已经处理的元素数量吗?
我有类似的事情:
Observable.fromArray(new String[]{"these", "are", "my", "values", "."})
.map(s -> doSomeCoolStuff(s))
// ...
.subscribe(amountOfProcessedItems -> Log.d("test", "" + amountOfProcessedItems));
我正在寻找一些东西,以便我的输出看起来像 1 2 3 4 5
,基本上在每个项目之后计算已经发出的项目数量。
只数元素:
AtomicInteger counter = new AtomicInteger();
Observable.fromArray(new String[]{"these", "are", "my", "values", "."})
.map(s -> doSomeCoolStuff(s))
// ...
.subscribe(dummy -> Log.d("test", "" + counter.incrementAndGet()));
编辑:如果您只想将元素转换为递增整数,方法如下:
sourceOservable
.zipWith(Observable.range(0, Integer.MAX_VALUE), (any, counter) -> counter)
.whatever(...)
你也可以使用scan
Observable
.just("One","Two","Three","Four")
.scan(1,(counter,string) -> ++counter)
.subscribe(item -> Log.i(TAG,item.toString()));
有什么方法可以计算 RxAndroid 流中已经处理的元素数量吗?
我有类似的事情:
Observable.fromArray(new String[]{"these", "are", "my", "values", "."})
.map(s -> doSomeCoolStuff(s))
// ...
.subscribe(amountOfProcessedItems -> Log.d("test", "" + amountOfProcessedItems));
我正在寻找一些东西,以便我的输出看起来像 1 2 3 4 5
,基本上在每个项目之后计算已经发出的项目数量。
只数元素:
AtomicInteger counter = new AtomicInteger();
Observable.fromArray(new String[]{"these", "are", "my", "values", "."})
.map(s -> doSomeCoolStuff(s))
// ...
.subscribe(dummy -> Log.d("test", "" + counter.incrementAndGet()));
编辑:如果您只想将元素转换为递增整数,方法如下:
sourceOservable
.zipWith(Observable.range(0, Integer.MAX_VALUE), (any, counter) -> counter)
.whatever(...)
你也可以使用scan
Observable
.just("One","Two","Three","Four")
.scan(1,(counter,string) -> ++counter)
.subscribe(item -> Log.i(TAG,item.toString()));