【问题标题】:rxAndroid retrofit get result of each call from the sequencerxAndroid 改造从序列中获取每个调用的结果
【发布时间】:2016-06-14 16:58:08
【问题描述】:

我必须按顺序执行 3 个 API 调用
并且这样做 我用observable.concatMap(new Func1<>...)
最后一个我有一个订阅者要更改activity

但是我想在 UI 线程中更新 progressBar 以让用户知道部分任务已完成。

private void getAllData() {
    updateUserTask(
        getUserScheduleObservable(
            getCurrentUserObservable()));
}

private void updateUserTask(Observable<TaskWrapper> observable) {
    wrapObservable(observable)
        .subscribe(new Subscriber<TaskWrapper>() {
            @Override
            public void onNext(TaskWrapper taskWrapper) {
                openCurrentFragment();
                hideProgressIndicators();
            }

            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable throwable) {
            }
        });
}

private Observable<TaskWrapper> getUserScheduleObservable(Observable<ScheduleWrapper> observable) {
    return observable.concatMap(
        scheduleWrappers1 -> apiManager.getRouteObservable(vehicleDeliveryAreaRiderBundle.getVehicle().getId()));
}

private Observable<ScheduleWrapper> getCurrentUserObservable() {
    return apiManager.getUserObservable().concatMap(
            user -> apiManager.getCurrentScheduleObservable()
        );
}

【问题讨论】:

  • 请检查我的答案

标签: android retrofit rx-java rx-android


【解决方案1】:

我认为您正在寻找这样的东西。

public class ExampleUnitTest {
    @Test
    public void testSample() throws Exception {
        Observable<String> first = Observable.just("First");
        Observable<String> second = Observable.just("Second");
        Observable<String> third = Observable.just("Third");

        Observable.concat(first, second, third)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .doOnNext(this::updateProgress)
                .subscribe();
    }

    private void updateProgress(String s) {
        System.out.println(String.format("Notify your progress that %s ended", s));
    }
}

只需连接这些 observables,就可以达到预期的结果。

希望对你有帮助。

最好的问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2018-01-29
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多