Завершение обработки Android Kotlin

Прошу прощения, если этот вопрос задан ранее, я действительно не мог найти ничего, кроме simillar! Я также сожалею, если вопрос немой, я разработчик iOS, и я немного потерялся здесь в Android …

Поэтому я использую топливную библиотеку ( https://github.com/kittinunf/Fuel ) для получения данных GET JSON из API … В Swift есть что-то, называемое обработчиком завершения, когда всякий раз, когда функция завершается, она вернет его и немедленно запустите код внутри него. Это пример этого в Swift:

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

Мне нужно сделать что-то подобное с этой следующей функцией, которую я имею в Котлине.

 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")) } } } } 

Я читал о чем-то, называемом «обратный вызов», но я действительно не понимаю, как это работает, и как его реализовать (задача должна выполняться асинхронно).

Еще раз спасибо!

С уважением

В этом случае синтаксис похож на быстрый:

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

Затем в вашей функции у вас есть функция, называемая callback которую вы можете вызвать с результатом (измените String на то, что вы возвращаете).

Затем измените вызов функции из recommendationsData() на любую recommendationsData(doSomething) или

 recommendationsData { doSomethingWith(it) // or you can get named argument // do some more stuff }