¿Por qué mi función que llama a una API o inicia una rutina devuelve un valor vacío o nulo?

1 minuto de lectura

avatar de usuario
un_local_nadie

(Descargo de responsabilidad: hay un montón de preguntas que surgen de personas que preguntan si los datos son nulos o incorrectos cuando se usan operaciones asincrónicas a través de solicitudes como Facebook, Firebase, etc. Mi intención con esta pregunta era proporcionar una respuesta simple a ese problema para todos. comenzando con operaciones asincrónicas en android)

Estoy tratando de obtener datos de una de mis operaciones, cuando lo depuro usando puntos de interrupción o registros, los valores están ahí, pero cuando lo ejecuto siempre son nulos, ¿cómo puedo resolver esto?

base de fuego

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.

Corrutina Kotlin

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.

Etc.

  • Petición para modificar el título y la pregunta para mencionar también las corrutinas lanzadas, ya que es casi el mismo problema.

    – Tenfour04

    Hace 19 horas


  • @ Tenfour04, puede actualizar este título (y cualquiera de los contenidos) como desee, dudo que tenga un problema con él, simplemente no nos prohíba

    – a_local_nadie

    hace 43 minutos


  • Jaja, está bien, trataré de ser bueno.

    – Tenfour04

    hace 14 minutos

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad