我正在使用Azure移动服务,我需要根据ID列表从表中获取电子邮件。我有一个方法,通过循环Id列表和每个项目来获取表格中的特定项目。但是在onComplete
之前执行。这是我的代码:
private ArrayList<String> administratorsEmail = new ArrayList<String>();
public boolean getAdminsEmail(List<String> adminList)
{
for(String ids : adminList)
{
UsersTable.lookUp(ids, new TableOperationCallback<Users>()
{
public void onCompleted(Users entity, Exception exception, ServiceFilterResponse response)
{
if (exception == null)
{
administratorsEmail.add(entity.getEmail());
}
}
});
}
//CODE HERE EXECUTES BEFORE ONCOMPLETE
}
我需要填写administratorsEmail
列表。我需要在列表administratorsEmail
完全填充后执行一些代码。但是我不能把代码放在onComplete
方法中,因为它会执行与循环相同的时间。
我需要知道OnCompleted何时完成。任何机构都可以为此提出更好的建议或帮助吗?
谢谢!
答案 0 :(得分:1)
您可以为要处理的记录数量以及int counter
运行代码时创建counter == totalRecords
。
public boolean getAdminsEmail(List<String> adminList)
{
int counter = 0;
int totalRecords = adminList.length();
for(String ids : adminList)
{
UsersTable.lookUp(ids, new TableOperationCallback<Users>()
{
public void onCompleted(Users entity, Exception exception, ServiceFilterResponse response)
{
if (exception == null)
{
administratorsEmail.add(entity.getEmail());
if (++counter == totalRecords) afterCompleted();
}
}
});
}
}
private void afterCompleted() {...