Saltar al contenido

Devolución de llamada con parámetros con Kotlin

Es fundamental entender el código bien antes de utilizarlo a tu proyecto si ttienes algo que aportar puedes comentarlo.

Solución:

Esto realmente depende de cómo defina el método de devolución de llamada. Si utiliza una función independiente, utilice el :: operador. Primero (por supuesto), debería explicar la sintaxis:

(//these parenthesis are technically not necessary
(persons: Array, error: MyError?)//defines input arguments: an Array of Person and a nullable MyError
     -> Unit//defines the return type: Unit is the equivalent of void in Java (meaning no return type)
)

Entonces el método se define como:

fun callback(persons: Array, error: Exception?)
    //Do whatever

Y lo llamas así:

DataProvider.getPeople(
    true,
    results = this::callback
)

Sin embargo, si usa funciones de devolución de llamada anónimas, es ligeramente diferente. Esto también usa lambda:

getPeople(true, results=/*bracket defines a function. `persons, error` are the input arguments*/persons, error ->  
        //do whatever
    )

Sí, Kotlin tiene una excelente manera de usar las funciones de devolución de llamada. A continuación, le mostraré un ejemplo de cómo las uso:

fun addMessageToDatabase(message: String, fromId: String, toId: String,
                                addedMessageSuccessHandler: () -> Unit,
                                addedMessageFailureHandler: () -> Unit) 



    val latestMessageRef = mDatabase.getReference("/latest-messages/$fromId/$toId")
    latestMessageRef.setValue(message).addOnSuccessListener 
        latestMessageUpdateSuccessHandler.invoke()

    .addOnFailureListener 
        latestMessageUpdateFailureHandler.invoke()
    

Y finalmente, puede utilizar las nuevas devoluciones de llamada con el siguiente código

databaseManager.updateLatestMessageForUsers(message, fromId, toId,
        latestMessageUpdateSuccessHandler = 
            // your success action
        ,
        latestMessageUpdateFailureHandler = 
            // your failure action
        )

Entonces, básicamente, cuando agrego con éxito una nueva fila a mi base de datos, invoco una respuesta de éxito o falla a la persona que llama al servicio. Esperemos que esto ayude a alguien.

Reseñas y calificaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *