我正在尝试使用相同的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
中逐个检查回复,并在检查完最后一个请求时使用onComplete
执行Observer
。有人可以帮我吗?
提前致谢。
答案 0 :(得分:1)
听起来您正在寻找merge运营商。
答案 1 :(得分: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);