我正在尝试使用Volley执行多个HTTP请求,其中每个请求依赖于前一个的结果,作为设计的最佳选择是什么?
1 - 在前一个请求的onResponse
回调中触发下一个请求?
2 - 编写一些具有在请求的onResponse
方法中调用的回调的协调器类,并触发下一个请求
第二个选项的骨架代码
coodrinator = new Coordinator();
JsonObjectRequest firstRequest = new JSONObjectRequest(Request.Method.GET,firstURL),new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//handle the responsee
coordinator.onFirstRequestRecieved();
}
},
errorListener);
private void doSecondRequest(){
JsonObjectRequest secondRequest = new JSONObjectRequest(Request.Method.GET,secondURL),new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//handle the responsee
coordinator.onSecondRequestRecieved();
}
},
errorListener);
}
private class Coordinator{
public void onFirstReequestRecieved(){
doSecondRequest();
}
public void onSecondRequestRecieved(){
//do Something
}
}
答案 0 :(得分:1)
如果需要第一个请求响应参数来发出第二个请求,那么你可以采用同步方式。这可以通过在onResponse上发出第二个请求来实现第一个请求可以没有好的或坏的做法。
事情是凌空是异步的并且请求队列中添加的内容执行而不依赖于其他请求,我们将使它成为同步请求,并且可以通过多种方式来实现查看您的需求。