使用 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);
我想构建一个异步操作来迭代给定字符串中的字符。我有一个由 "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);