改进:如何在执行下一行代码之前等待请求调用完成?

时间:2020-03-17 10:09:56

标签: android rest asynchronous retrofit

我有2种REST请求方法; getA()getB()。两者都是使用call.enqueue()的异步调用。

在获得getB()的结果之前,我无法致电getA()。 在onCreateView()中,我将依次调用getA()getB()。但是,getB()可能会失败,因为它还没有getA()的结果。解决此问题的一种方法是,我可以在getB()内调用getA(),但我认为这不是干净的编码。

有没有办法等到getA()的请求完成后再在getB()中调用onCreateView()

2 个答案:

答案 0 :(得分:1)

您还可以从RxJava使用ZIP运算符

Documentation

可以找到示例here

答案 1 :(得分:0)

getB()回调改进提供的范围内调用onResponse

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
        }
    });

上面的方法行得通,但是,我强烈建议使用RxJava进行改型处理Api调用。