getRemarks(licensePlate)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(response -> {
Store.remarks(response);
}, throwable -> {
Timber.e("Error", throwable);
});
public static Observable<List<Remark>> getRemarks(String number) {
return getApiService().getRemarks(number);
}
所以,现在这是我的代码,但我需要等到这个方法得到响应才能继续代码。正如我所看到的,我需要.toBlocking(但它无限期地阻止了我的代码)并且我读到了我需要的地方.forEach方法但不知道如何使用它。
答案 0 :(得分:1)
而不是subscribe
使用:
.toBlocking()
.forEach(new Action1<List<Remark>>() {
@Override
public void call(List<Remark> remarks) {
Store.remarks(remarks);
}
});
无论如何,除非你使用它进行测试,否则我会避免使用toBlocking
,我会寻找不同的策略。 toBlocking
确实会返回BlockingObservable
作为documentation says:
它可用于测试和演示目的,但是 通常不适合生产应用。
考虑通过流组合利用RxJava的真正力量。您可以查看here以了解哪些是用于合并Observable
s
答案 1 :(得分:0)
如果getRemarks()
正在使用改造,那么你可以执行类似跟随的操作,这将同步执行(如果你这样做,你将需要在非UI线程中运行以避免NetworkOnMainThreadException
)
getApiService().getRemarks(number).execute()