完成处理程序Android Kotlin

对不起,如果这个问题以前被问过,我真的无法找到任何甚至没有simillar! 我很抱歉,如果这个问题是愚蠢的,我是一个iOS开发人员,我有点失落在Android这里…

所以我使用燃料库( https://github.com/kittinunf/Fuel )从API获取JSON数据…在Swift中有一个叫做完成处理程序的东西,只要函数完成,就会返回它,立即运行它里面的代码。 这是Swift中的一个例子:

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

我需要做的是在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")) } } } } 

我读了一些叫做“回调”的东西,但是我真的不明白它是如何工作的,也不知道如何实现它(任务必须异步完成)。

非常感谢你!

问候

在这种情况下,语法类似于swift:

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

然后在你的函数中,你有一个称为callback函数,你可以调用结果(改变String ,无论你正在返回)。

然后将您的函数调用从recommendationsData()更改为recommendationsData(doSomething)

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