Если функция asyncGet вызывает вашу функцию createCustomCallbackOne, тогда это просто.
Для каждой клавиши вы вызываете две страницы. «https://fakeurl1.com/item/" и» https://fakeurl2.com/item/" (пропущено + k)
Так что вам нужна карта, чтобы отследить это, и достаточно только одной функции обратного вызова.
Используйте карту с ключом, обозначающим каждый звонок:
static final Map<String, Integer> trackerOfAsyncCalls = new HashMap<>();
public void init() throws IOException {
Map<String, CustomObject> mapOfObjects = new HashMap<String, CustomObject>();
//need to keep a track of the keys in some object
ObjectMapper mapper = new ObjectMapper();
trackerOfAsyncCalls.clear();
// some code to populate the map
mapOfObjects.forEach((k,v) -> {
HttpClient.asyncGet("https://fakeurl1.com/item/" + k, createCustomCallback(k,1 , mapper));
// HttpClient is just a wrapper class for your standard OkHTTP3 calls,
// e.g. client.newcall(request).enqueue(callback);
HttpClient.asyncGet("https://fakeurl2.com/item/" + k, createCustomCallback(k, 2, mapper));
trackerOfAsyncCalls.put(k + "-2", null);
});
}
// последний важный
private createCustomCallbackOne (конечная строка idOuter, int which, преобразователь ObjectMapper) {
вернуть новый Callback () {
final String myId = idOuter + "-" + which;
trackerOfAsyncCalls.put(myId, null);
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
trackerOfAsyncCalls.put(myId, 1);
///or put outside of if if u dont care if success or fail or partial...
Теперь настройте поток или, что лучше, schduler, который будет вызываться каждые 5 секунд, проверьте все eys в mapOfObjects и trackerOfAsyncCalls, чтобы увидеть, все ли ключи были запущены, и был ли достигнут какой-либо окончательный успех, время ожидания или состояние ошибки для всех.