I would like to implement the async while loop in Java using RxJava.
More specifically, here is my non-async Java code:
for (String dataCenter : dataCenters) {
final Set<Server> serversInDataCenter = getServersInDataCenterSync(dataCenter);
if (!CollectionUtils.isEmpty(serversInDataCenter)) {
final Server available = findOneWithSlots(serversInDataCenter);
if (available != null) {
return available;
}
}
// if no available server found for current dataCenter, try next
}
return null;
What the code above does is that finds an available server from a data center.
Since 90% of the cases, there will be a server available in the first data center that is checked, I don't want to fetch all servers for all data centers in advance.
Now, imagine Set<Server> getServersInDataCenterSync(String dataCenter) method is changed to an async one and it takes a callback instead: void getServersInDataCenter(String dataCenter, AsyncResultHandler<Set<Server>> handler). That also makes another thing