私はデータベースをクエリし、クエリが終了した後に別のメソッドを実行する方法を書いています。データベースへの呼び出しが非同期であるので、しかし、私は、データベース呼び出しが完了するまでそのように、実行の主な流れを停止する方法を見つけ出すように見えることはできません。Javaでの実行の非同期フロー
public void getUserFromEmail(String email) {
Firebase usersRef = rootRef.child("users");
//Asynchronous database call, want to stop everything else
usersRef.orderByKey().equalTo(email).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println(firebaseError.getMessage());
}
});
//Perform some more operations after database call is finished
}
私が働いに使用していますNodejの非同期コールバックを使用していますが、Javaで実行フローを制御する同等の方法があるかどうかはわかりません。私がしたいことを達成するための簡単な方法はありますか?
私はコールバックが行われた後、元のmeyhodから値を返すしたい場合はどう? – Matt
メソッドは 'void'です。あなたは戻ることはできません。本当に、あなたはすべきではありません。非同期が 'return'ステートメントでうまく動かない –
コールバック内の' dataSnapshot'から取得したデータから直接UIを更新することができます –