我有两个网络调用,都在方法xyz
中调用。
网络通话如下:
SingleObserver<RegisterResponse> observer = new SingleObserver<RegisterResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onSuccess(@NonNull RegisterResponse registerResponse) {
}
}
@Override
public void onError(@NonNull Throwable e) {
}
}
};
这是我的另一个网络通话:
TrueTimeRx.build().initializeRx("time.apple.com")
.subscribeOn(Schedulers.io())
.subscribe(date -> {
Timber.d("TrueTime was initialized at: %s" + date);
actualDate = TrueTime.now();
}, throwable -> {
});
我想确保在开始第一个网络呼叫的成功之前设置了实际日期。有时第二个网络呼叫的执行失败,因为第一个网络呼叫执行得非常快。
任何人都可以让我知道如何在调用onSuccess之前确保设置实际日期。
答案 0 :(得分:0)
由于您需要第一个网络呼叫的结果,因此您可以使用Observable而不是SingleObserver。在Observable中,还有另一个回叫onNext。因此,您可以在此onNext()块中初始化第二个网络。这样一来,始终可以确保在拨打第二个网络电话之前获得结果。