首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RxJava在继续之前等待检索到响应

RxJava在继续之前等待检索到响应
EN

Stack Overflow用户
提问于 2017-07-07 17:24:36
回答 2查看 1.1K关注 0票数 1
代码语言:javascript
复制
        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方法,但不知道如何使用它。

EN

回答 2

Stack Overflow用户

发布于 2017-07-07 17:54:28

而不是使用subscribe

代码语言:javascript
复制
.toBlocking()
.forEach(new Action1<List<Remark>>() {
    @Override
    public void call(List<Remark> remarks) {
        Store.remarks(remarks);
    }
});

无论如何,除非你是用它来测试,否则我会避免使用toBlocking,我会寻找不同的策略。实际上,toBlocking会返回一个作为documentation saysBlockingObservable

它可用于测试和演示目的,但通常不适用于生产应用程序。

考虑通过流组合来开发RxJava的真正功能。您可以查看here以了解哪些是组合Observable的可用选项

票数 1
EN

Stack Overflow用户

发布于 2017-07-07 18:00:34

如果getRemarks()正在使用改进,那么你可以像下面这样做,它将同步执行(如果你这样做是为了避免NetworkOnMainThreadException,你将需要在非UI线程中运行)

代码语言:javascript
复制
getApiService().getRemarks(number).execute()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44967192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档