如果之前有人问过这个问题,我很抱歉,我真的找不到任何不相似的东西!如果这个问题很愚蠢,我也很抱歉,我是一名 iOS 开发人员,但我对 Android 有点迷失了......
所以我正在使用 Fuel Library(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
}