在rxJava中使用just操作符时遇到的坑

作者: anTttt | 来源:发表于2016-04-07 13:35 被阅读1125次
错误代码
Observable
         .just(initValues()) 
         .subscribeOn(Schedulers.io())   
         .observeOn(AndroidSchedulers.mainThread())
         .subscribe(values -> doSomething());

我的需求是调用initValues()方法从数据库加载一些数据,在io线程执行,然后在mainThread订阅结果,但是这样写并不能实现我的需求。

原因

因为just()from()这类能够创建Observable的操作符在创建之初,就已经存储了对象的值,而不是在被订阅的时候才创建。所以在我们订阅之前,initValues()方法就已经在开始执行了,这样就不能达到我们想要的效果。

解决方法

用create()操作符。

Observable
       .create(subscriber ->
                XXObject values = initValues();
                subscriber.onNext(values);
        )
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(values -> doSomething());

相关文章

  • 在rxJava中使用just操作符时遇到的坑

    错误代码 我的需求是调用initValues()方法从数据库加载一些数据,在io线程执行,然后在mainThrea...

  • RxJava

    1.RxJava是什么 2.在Android中怎么去使用RxJava 3.RxJava操作符的介绍 4.RxJav...

  • 使用 UT 玩转 defer 和 retryWhen

    在《使用 UT 高效地玩转 RxJava 的操作符》一文中,笔者介绍了一种学习 RxJava 操作符的方式,除了文...

  • rxjava2 flowable/observable操作符汇总

    Rxjava2 操作符汇总 构造 create/generate ? just/empty/error/never...

  • RxJava学习(5.9)

    1.RxJava 操作符 just、from、defer、interval(间隔)、range(范围)、repea...

  • RxJava 线程控制

    引言 该篇文章主要是关于RxJava的线程使用的代码demo讲解。 具体使用 在RxJava中我们实现操作符sub...

  • Rxjava操作符大全

    RxJava操作符图谱 创建操作符 create 完整创建1个被观察者对象(Observable) just 快速...

  • RxJava Operator之创建型操作符

    RxJava创建型操作符 just just操作符 将一个或多个对象转换成发射这个或这些对象的一个Observab...

  • RxJava使用笔记

    一、RxJava操作符 1、创建操作符 create、just、from interval:创建一个按固定时间间隔...

  • RxJava操作符系列三

    RxJava操作符系列传送门 RxJava操作符源码RxJava操作符系列一RxJava操作符系列二 前言 在之前...

网友评论

    本文标题:在rxJava中使用just操作符时遇到的坑

    本文链接:https://www.haomeiwen.com/subject/jqgmlttx.html