Объект из Observable <T>с subscribe () не печатает значения - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь понять rxJava Observable уже более суток, но я просто не могу понять, что мне нужно для моего случая. Я думаю, потому что я не создаю Observable, а просто получаю его, возвращенный из вызова API, и мне нужен класс типа Observable, поэтому я могу использовать свойства объекта этого класса.

Здесьмой код, но когда я запускаю операторы печати полностью пропускается. Как я могу использовать свойства объекта в Обозревателе?

// 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()));

1 Ответ

0 голосов
/ 05 ноября 2019

если вы вызываете этот код из функции 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(), как вы упомянули, но это остановит поток

...