Observable <T>中带有subscribe()的对象不打印值

时间:2019-10-25 02:18:35

标签: java observable rx-java2

我已经尝试理解rxJava Observable超过一天了,但是我只是想不出我需要什么。我想是因为我不是在创建Observable,而是仅从API调用中返回一个Observable,并且我需要的是Observable类型的类,所以我可以使用该类的对象属性。

这是我的代码,但是当我运行打印语句时,它会被完全跳过。如何使用包装在观察器中的对象属性?

#include <iostream>

class A;
class B;

bool operator==(const A &a, const B &b){ return true; };

class A
{
  public:
      bool operator==( const B &rhs ){ return false; };
};

class B
{
};

int main( int argc, char **argv )
{
  A a;
  B b;
  if( a == b )
  { 
      std::cout << "a==b" << std::endl;
  }
};

1 个答案:

答案 0 :(得分:0)

如果您从main()函数调用此代码,则看不到日志,我认为此函数createAsync(..)在后​​台线程中起作用,因此返回主线程你有两个选择。

干净的是使用ObserveOn() 因此代码将是这样

    rx.Observable<Person> personW = client.largePersonGroupPersons()
    .createAsync(largePersonGroupId, new CreateLargePersonGroupPersonsOptionalParameter().withName("Woman"))
.observeOn(mainthread())//get result in the main thread
        .subscribe(result -> {
            System.out.println("Creating Large Person Group Person called "); 
    })

mainthread()应该返回一个调度程序,供您确定,在Android中,我们可以通过observeOn(AndroidSchedulers.mainThread())

来获得它

第二种选择是像您提到的那样放置blockingGet(),但这会冻结线程