使用 RxJava2 或 RxKotlin 的 For 循环

For-loop with RxJava2 or RxKotlin

我想构建一个异步操作来迭代给定字符串中的字符。我有一个由 "mystring".toCharArray() 获取的字符数组。我想使用 RX 迭代每个第 10 个字符。

我知道我可以用 AsyncTask and for-loops but i thought RX would be more elegant solution. I have read documentations 做,但不知道怎么做。

我脑海中的另一个想法是创建一个 PublishSubject 并在 for 循环中触发 onNext(),索引随着订阅增加 10。

PS:"mystring" 可以像 json、xml 等更大。请随时评论 ram 分析。

RxJava 不支持原始数组,但您可以使用 range 运算符形式的 for 循环并索引到原始数组。通过一些索引算法,您可以轻松获得每 10 个字符:

char[] chars = ...

Observable.range(0, chars.length)
    .filter(idx -> idx % 10 == 0)
    .map(idx -> chars[idx])
    .subscribe(System.out::println);