我在尋找更好的方法來做到這一點:機器人 - 併發API調用
APIManager.getInstance().processRequest(baseRequest, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
callback.failure(new Error(null, 400));
}
@Override
public void onResponse(final Call call, Response response) throws IOException {
String stringJson = response.body().string();
try {
JSONObject menuObject = new JSONObject(stringJson);
final Menu menu = new Menu();
if (!menuObject.isNull("category")) {
final JSONArray categoriesArray = menuObject.getJSONArray("category");
for (int i = 0; i < categoriesArray.length(); i++) {
final JSONObject category = categoriesArray.getJSONObject(i);
final MenuCategory menuCategory = new MenuCategory(category);
menu.getCategories().add(menuCategory);
getCategoryProductsRequest(storeId, menuCategory.getId(), priceType, new APICallback<ArrayList<MenuItem>>() {
@Override
public void success(final ArrayList<MenuItem> responseItems) {
for (final MenuItem menuItem : responseItems) {
getProductDetailsRequest(storeId, menuItem.getProductID(), priceType, new APICallback<ArrayList<MenuConfiguration>>() {
@Override
public void success(ArrayList<MenuConfiguration> response) {
menuItem.setConfigurations(response);
menuCategory.setItems(responseItems);
}
@Override
public void failure(Error error) {
}
});
}
}
@Override
public void failure(Error error) {
}
});
}
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// this code will be executed after 2 seconds
callback.success(menu);
}
}, 5000);
}
} catch (JSONException e) {
callback.failure(new Error(null, 400));
e.printStackTrace();
}
}
我想刪除延遲定時器和發送回調時,所有終端都完成了。每個函數只是在我的API管理器中創建一個進程,我正在考慮使用隊列系統,但我不確定是否可以,因爲我需要來自父節點的結果。
我一直在這裏旋轉我的輪子幾天。