首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >完成处理程序Android Kotlin

完成处理程序Android Kotlin
EN

Stack Overflow用户
提问于 2017-08-31 01:03:41
回答 1查看 8.8K关注 0票数 17

很抱歉,如果之前有人问过这个问题,我真的找不到任何东西,甚至连相似的东西都没有!如果这个问题很愚蠢,我也很抱歉,我是一个iOS开发人员,在这里我有点迷失在安卓中……

所以我使用燃料库(https://github.com/kittinunf/Fuel)从一个应用程序接口中获取JSON数据。在Swift中有一个称为完成处理程序的东西,每当函数完成时,它就会返回它,并立即运行其中的代码。这是Swift中的一个示例:

代码语言:javascript
复制
func hardProcessingWithString(input: String, completion: (result: String) -> Void) {
    ...
    completion("we finished!")
}

我需要做的是用Kotlin中的以下函数做一些类似的事情。

代码语言:javascript
复制
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"))
                        }


                    }
                }
}

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

再次感谢您!

问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-31 01:31:48

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

代码语言:javascript
复制
fun recommendationsData(callback: (String) -> Unit) {

然后,在您的函数中有一个名为callback的函数,您可以使用结果调用该函数(将String更改为您返回的任何内容)。

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

代码语言:javascript
复制
recommendationsData {
    doSomethingWith(it) // or you can get named argument
    // do some more stuff
}
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45966061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档