完成处理程序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 }