android - 当另一个可观察量完成时订阅另一个可观察量

标签 android multithreading rx-java rx-android

简单来说,如何在另一个订阅者的 onNext() 方法中订阅一个 observable,这样我们只能在当前 observable 完成执行时进行嵌套订阅。两个订阅都将在单独的线程上进行,并且要求第一个线程必须在第二个线程启动之前完成其执行。

makeObservable()
.subscribeOn(Schedulers.newThread())
.subscribe(new Subscriber<User> {
    @override
    void onNext(User user){
    //do something
    //make another subscription here
});

最佳答案

不要进行新的订阅,返回另一个 Observable 并订阅它。

apiCall()
.subscribeOn(<scheduler>)
.observeOn(<scheduler>)
.flatMap(new Func1<User, Observable<Something>() {
    @Override
    public Observable<Something> call(User user) {
        return Observable.just(<example>);
    }
});

编辑:当 api 调用返回时,flatMap 将拦截流,并从那里返回 Observable 或调用返回 Observable 的函数(即另一个 API 调用)。

关于android - 当另一个可观察量完成时订阅另一个可观察量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39251355/

相关文章:

scala infinite rx observable creation - 如何正确地做到这一点?

android - Retrofit 2 RxJava - Gson - "Global"反序列化,改变响应类型

android - Xamarin.Forms 中类似 colorAccent 的属性

android - Firestore API 之前未在项目 416788152002 中使用过或已被禁用

vb.net - 一旦条件为真就返回而不挂起

Java:如何使用第一个完成的多个线程的结果?

rx-java - RxJava Observable 基于内容的缓冲区

android - 如何通过编码将图像和.txt(多个文件)文件附加到gmail?

java - 拦截 url 以启动应用程序

python - 慢速网络会导致 Python 应用程序使用*更多* CPU 吗?