我已经尝试了解rxJava Observable超过一天了,但是我无法弄清楚我的情况需要什么。我想是因为我不是在创建Observable,而是仅从API调用返回一个Observable,并且我需要的是Observable类型的类,因此我可以使用该类的对象属性。
这是我的代码,但是当我运行print语句时,它会被完全跳过。如何使用包装在观察器中的对象属性?
// Define woman friend by creating their own large person group person.
// Returns an Observable<Person>.
rx.Observable<Person> personW = client.largePersonGroupPersons()
.createAsync(largePersonGroupId, new CreateLargePersonGroupPersonsOptionalParameter().withName("Woman"));
System.out.println("Creating Large Person Group Person called ");
personW.subscribe(response -> System.out.print(response.name()));
如果从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 ");
})
第二种选择是像您提到的那样放置blockingGet()
,但这将冻结线程