很抱歉,如果之前有人问过这个问题,我真的找不到任何东西,甚至连相似的东西都没有!如果这个问题很愚蠢,我也很抱歉,我是一个iOS开发人员,在这里我有点迷失在安卓中……
所以我使用燃料库(https://github.com/kittinunf/Fuel)从一个应用程序接口中获取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"))
}
}
}
}我读过一些叫做“回调”的东西,但我真的不明白它是如何工作的,也不知道如何实现它(任务必须异步完成)。
再次感谢您!
问候
发布于 2017-08-31 01:31:48
在这种情况下,语法类似于swift:
fun recommendationsData(callback: (String) -> Unit) {然后,在您的函数中有一个名为callback的函数,您可以使用结果调用该函数(将String更改为您返回的任何内容)。
然后将函数调用从recommendationsData()更改为recommendationsData(doSomething)或
recommendationsData {
doSomethingWith(it) // or you can get named argument
// do some more stuff
}https://stackoverflow.com/questions/45966061
复制相似问题