Android 改造:如何等到请求调用完成后再执行下一行代码?
我有2种REST请求方法Android 改造:如何等到请求调用完成后再执行下一行代码?,android,rest,asynchronous,retrofit,Android,Rest,Asynchronous,Retrofit,我有2种REST请求方法getA()和getB()。两者都是使用call.enqueue()的异步调用在获得getA()的结果之前,我无法调用getB()。 在onCreateView()中,我将连续调用getA()和getB()。但是,getB()将失败,因为它还没有来自getA()的结果。解决这个问题的一种方法是,我可以在getA()内部调用getB(),但我认为这不是干净的编码 在调用onCreateView()中的getB()之前,是否有方法等待来自getA()的请求完成?从onRes
getA()
和getB()
。两者都是使用call.enqueue()
的异步调用在获得
getA()
的结果之前,我无法调用getB()
。
在onCreateView()
中,我将连续调用getA()
和getB()
。但是,getB()
将失败,因为它还没有来自getA()
的结果。解决这个问题的一种方法是,我可以在getA()
内部调用getB()
,但我认为这不是干净的编码在调用
onCreateView()
中的getB()
之前,是否有方法等待来自getA()
的请求完成?从onResponse
回调函数中调用getB()
call.enqueue(new Callback<Thing>() {
@Override
public void onResponse(Call<Thing> call, Response<Thing> response) {
if (response.isSuccessful) {
callB();
}
}
@Override
public void onFailure(Call<Thing> call, Throwable t) {
// handle failure
}
});
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.issucessful){
callB();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
//处理失败
}
});
但是,在使用改型处理Api调用时,我强烈支持使用RxJava。您也可以使用RxJava中的
ZIP
操作符
例如,我正在研究它,但我不了解它是如何工作的。您能否解释一下,使用RXJava中的
zip
操作符如何使主线程暂停,直到请求完成后再继续?