我正在从事一个android项目。其中一项任务需要从ArrayList中获取某些值,并对每个值执行异步函数。
我想出了一种在每个值上顺序执行函数的方法,但这只是抵消了异步函数的优点。
我要实现的是并行执行具有不同值的函数。
我尝试过的事情:
-创建一个新的计数器变量并在2个计数器上进行测试,但最终结果是创建了一个无限循环
private static void convertListCurrencies(final ArrayList<Logs> logsList, final FirestoreCallback<Logs> firestoreCallback){
if(mConvCount >= logsList.size()){
firestoreCallback.onCallback(logsList);
}else{
final Logs l = logsList.get(mConvCount);
mConvCount++;
Currencies.convertAmount(l.getAmount(), l.getCurrID(), NavigationLayout.mUser.getPrefCurrencyID(),
new FirestoreCallback<Double>() {
@Override
public void onCallback(ArrayList<Double> list) {
l.mAmount = list.get(0);
convertListCurrencies(logsList, firestoreCallback);
}
});
}
}
预期输出:同时执行多个Currencies.convertAmount(...)
实际输出:顺序执行