rx-java - 需要在后台生成的可迭代的 RxJava Observable
问题描述
我想要一个来自可迭代的 Observable,它每次都返回列表的一部分,但问题是我需要从另一个可观察对象异步生成该列表,我该怎么做?
Observable.fromIterable(getListAsync())
.buffer(3, 3)
.subscribe()
解决方案
经过一番搜索,我所做的是
private Observable<List<Object>> generateListObservable() {
return Single.create(emitter -> {
ArrayList<Integer> aInteger = new ArrayList<>();
aInteger.add(1);
aInteger.add(2);
aInteger.add(3);
aInteger.add(4);
aInteger.add(5);
aInteger.add(6);
emitter.onSuccess(aInteger);
}).flattenAsObservable(o -> (Iterable<? extends List<Object>>) o);
}
之后,我有一个可以与其他方法结合使用的 Observable;在这里,我使用 Zip 一次返回一个包含 2 个元素的列表,每个元素之间有 1 秒的延迟
private void displayListInChunks(){
Observable.zip(generateListObservable().buffer(2),
Observable.interval(1, TimeUnit.SECONDS),
(o, aLong) -> o).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()).subscribe(lists ->
Toast.makeText(MainActivity.this, lists.toString(), Toast.LENGTH_SHORT).show());
}
推荐阅读
- r - R中数据框中每行最大值的比率
- javascript - RxJs - 创建 Observable 的 Observable 数组的正确模式/方法是什么?
- r - nflscrapR 包的安装问题
- flutter - 如何在 Flutter 中共享卡片?
- c++ - C++ 中的 restrict、__restrict 和 _restrict_ 关键字有什么区别?
- flutter - 将文本编辑器转换为 html,然后打印为 pdf
- reactjs - 如何在没有 php artisan 预设的情况下使用 laravel api 部署 React 应用程序
- c++ - 尝试在结构中初始化联合时出错
- angular - 从 Angular 的单个组件中隐藏 app.component 文件的内容
- swift - 从主视图导航到详细视图时如何隐藏自定义选项卡视图?| SwiftUI 代码