Completion Handler Android Kotlin

Lo siento si esta pregunta se ha realizado anteriormente, realmente no pude encontrar nada ni siquiera simillar! También lo siento si la pregunta es tonta, soy un desarrollador de iOS y estoy un poco perdido aquí en Android …

Así que estoy usando Fuel Library ( https://github.com/kittinunf/Fuel ) para OBTENER datos de JSON desde una API … En Swift hay algo llamado controller de finalización que cada vez que la function termina, la devuelve y ejecute inmediatamente el código dentro de él. Este es un ejemplo de ello en Swift:

func hardProcessingWithString(input: String, completion: (result: String) -> Void) { ... completion("we finished!") } 

Lo que necesito es hacer algo similar con esta siguiente function que tengo en Kotlin.

 fun recomendationsData() { Fuel.get("https://rss.itunes.apple.com/api/v1/us/apple-music/hot-tracks/10/explicit.json").response { request, response, result -> println(request) println(response) val (bytes, error) = result if (bytes != null) { val str = String(bytes) val obj = JSONObject(str) val resultsP = obj.getJSONObject("feed") val results = resultsP.getJSONArray("results") for (i in 0..(results.length() - 1)) { val o = results.getJSONObject(i) trackName1.add(o.getString("name")) trackArtist1.add(o.getString("artistName")) trackImage1.add(o.getString("artworkUrl100")) } } } } 

He leído sobre algo llamado "callback", pero realmente no entiendo cómo funciona, ni cómo implementarlo (la tarea debe hacerse de forma asincrónica).

¡De nuevo, muchas gracias!

Saludos

En este caso, la syntax es similar a swift:

 fun recommendationsData(callback: (String) -> Unit) { 

Luego, en su function tiene una function llamada callback que puede llamar con el resultado (cambie la String por lo que esté devolviendo).

A continuación, cambie la invocación de su function de recommendationsData() a recommendationsData(doSomething) o

 recommendationsData { doSomethingWith(it) // or you can get named argument // do some more stuff } 
  • Cómo get datos de más de una aplicación json
  • ¿Lista floja en kotlin?
  • Delegación de Kotlin a expresión en lugar de reference fija
  • "La respuesta ya se ha escrito" con Vertx
  • ¿Por qué no puedo agregar dos numbers en Kotlin usando este código fuente?
  • Kotlin, apuntando a la interoperabilidad de Java: ¿Tipo idiomático para la colección perezosa?
  • kotlin y ArgumentCaptor - IllegalStateException
  • Swift si lo dejas y más en Kotlin
  • La function miembro no se puede usar como argumento
  • @ Clase enterrable con val en Kotlin
  • Agregar un oyente de deslizamiento a textView en Anko