【问题标题】:Combine requests with Retrofit2 and RxJava2将请求与 Retrofit2 和 RxJava2 结合起来
【发布时间】:2017-02-24 13:09:21
【问题描述】:

我正在尝试使用相同的Observer 观察两个请求。我的Observer

private BaseObserver<LoginResponse> loginObserver = new BaseObserver<LoginResponse>(this) {
    @Override
    public void onSubscribe(Disposable d) {
        super.onSubscribe(d);
        showLoading(true);
        Log.d(TAG, "onSubscribe: ");
    }

    @Override
    public void onNext(LoginResponse response) {
        super.onNext(response);
        Log.d(TAG, "onNext: ");
    }

    @Override
    public void onComplete() {
        super.onComplete();
        showLoading(false);
        Log.d(TAG, "onComplete: ");
    }

    @Override
    public void onError(Throwable e) {
        super.onError(e);
        showLoading(false);
    }
};

我的请求是使用 Retrofit2 构建的登录请求:

private void sendRequest(String username, String password) {
    IResourceAPI iResourceAPI = RetrofitClient.createIResourceClient(this);
    iResourceAPI.login(new LoginRequest(username, password))
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeWith(loginObserver);
}

现在我想启动 2 个或更多请求并在 onNext 中一一检查响应,当检查最后一个请求时,使用我的 Observer 执行 onComplete。谁能帮帮我?

提前致谢。

【问题讨论】:

  • 你想达到什么目的?结合两个日志响应?
  • 使用类似的东西 - doOnSubscribe,或者两个 observables 和 combineLatest?
  • 我想在onNext中发起2个或更多请求并一一检查响应,当检查最后一个请求时执行onComplete

标签: android retrofit2 rx-java2


【解决方案1】:

您正在寻找merge 运算符:

您可以组合多个 Observable 的输出,以便它们起作用 像单个 Observable 一样,通过使用 Merge 运算符。

只需修改您的请求以返回 Observable:

private Observable<LoginResponse> request(String username, String password) {
    IResourceAPI iResourceAPI = RetrofitClient.createIResourceClient(this);
    iResourceAPI.login(new LoginRequest(username, password))
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
}

然后合并:

Observable.merge<LoginResponse>(request(...), request(...))
    .subscribeWith(loginObserver);

【讨论】:

    【解决方案2】:

    听起来您正在寻找merge 运算符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 2019-07-12
      • 2019-06-20
      • 1970-01-01
      相关资源
      最近更新 更多