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方法,但不知道如何使用它。
最佳答案
代替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
可用的选项