2017-08-30 117 views
0

对不起,如果以前有人问过这个问题,我真的找不到任何甚至不是simillar的东西!我很抱歉,如果这个问题是愚蠢的,我是一个iOS开发人员,我有点在Android丢失...完成处理程序Android Kotlin

因此,我使用燃料库(https://github.com/kittinunf/Fuel)从一个GET JSON数据API ...在Swift中,有一些称为完成处理程序的东西,只要函数完成,它就会返回并立即在其中运行代码。这是它在斯威夫特的例子:

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

我需要的是做这项功能之后,我在科特林类似的东西。

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")) 
         } 


        } 
       } 
} 

从来就了解一些所谓的“回调”,但我真的鸵鸟政策明白它是如何工作的,也不知道怎样去实现它(该任务必须异步完成)。

非常感谢你!

问候

回答

0

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

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

然后在你的功能你有一个功能叫做callback,您可以用调用的结果(改变String,无论你”重新回来)。

然后改变从recommendationsData()你的函数调用要么recommendationsData(doSomething)

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

哇!非常感谢!!!完美无瑕地工作!再次感谢你 –