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可用的选项

07-24 09:26