【发布时间】:2019-04-08 16:08:20
【问题描述】:
我试图在我的代码中实现执行顺序。 这是我的应用程序中的用户注册功能,当我调用该功能时, 输出如下(假设 Account 存在): 测试1 帐户存在 但我的预期输出是: 账户存在 测试1 我不知道问题出在哪里,谁能帮我解决这个问题? 提前致谢。
private boolean checkAccountExist(final String userID){
FirebaseDatabase.getInstance().getReference("userAccount").child(userID);
cDB = FirebaseDatabase.getInstance().getReference("userAccount");
cDB.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.child(userID).exists()){
System.out.println("Account Exist");
}
else{
System.out.println("Account isn't exist");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
System.out.println("test1");
return true;
}
我的预期输出是: 帐户存在 测试1 但实际上输出是: 测试1 帐户存在
【问题讨论】:
-
这是一个回调。当它被称为完全不同时,但它不是阻塞的,并且不需要在
test打印之前(或之后)执行 -
有什么办法可以让它依次运行?我仍然对它的回调有点困惑,我认为它应该首先运行 onDataChange() 函数
-
将第二次打印添加到回调方法中。除此之外,没有。
-
@Zoe 谢谢你,我知道问题出在哪里
-
它似乎总是先运行“返回”动作,然后运行回调方法,真的吗?