Warum gibt meine Funktion, die eine API aufruft oder eine Coroutine startet, einen leeren oder Nullwert zurück?

Lesezeit: 1 Minute

Benutzer-Avatar
a_local_nobody

(Haftungsausschluss: Es gibt eine Menge Fragen, die sich ergeben, wenn Leute fragen, ob Daten null/falsch sind, wenn asynchrone Operationen über Anfragen wie Facebook, Firebase usw. verwendet werden. Meine Absicht für diese Frage war es, allen eine einfache Antwort auf dieses Problem zu geben beginnend mit asynchronen Operationen in Android)

Ich versuche, Daten von einer meiner Operationen abzurufen, wenn ich sie mit Haltepunkten oder Protokollen debugge, sind die Werte vorhanden, aber wenn ich sie ausführe, sind sie immer null, wie kann ich das lösen?

Firebase

firebaseFirestore.collection("some collection").get()
    .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot documentSnapshots) {
            //I want to return these values I receive here... 
        });
//...and use the returned value here.

Facebook

GraphRequest request = GraphRequest.newGraphPathRequest(
    accessToken,
    "some path",
    new GraphRequest.Callback() {
        @Override
        public void onCompleted(GraphResponse response) {
            //I want to return these values I receive here...
        }
    });
request.executeAsync();
//...and use the returned value here.

Kotlin-Koroutine

var result: SomeResultType? = null
someScope.launch {
    result = someSuspendFunctionToRetrieveSomething()
    //I want to return the value I received here... 
}
Log.d("result", result.toString()) //...but it is still null here.

Usw.

1018920cookie-checkWarum gibt meine Funktion, die eine API aufruft oder eine Coroutine startet, einen leeren oder Nullwert zurück?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy