完成处理程序Android Kotlin

时间:2017-08-30 17:03:41

标签: android android-asynctask kotlin

我很抱歉,如果之前已经提出过这个问题,我真的找不到任何甚至不相似的东西!我很抱歉,如果问题是愚蠢的,我是一名iOS开发人员,我在Android中有点迷失......

所以我使用Fuel Library(https://github.com/kittinunf/Fuel)来从API中获取JSON数据......在Swift中有一个叫做完成处理程序的东西,每当函数完成时,它会返回它并立即运行里面的代码。这是Swift中的一个例子:

 @HostListener('window:scroll', ['$event']) private scroll(event) {
    console.log(event)
  }
  Observable.fromEvent(document, 'scroll').subscribe(e => console.log(e))
window.addEventListener('scroll', function (e) {
  console.log(e)
})

我需要的是使用我在Kotlin中的这个功能做类似的事情。

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

我读过一些名为“回调”的内容,但我真的不明白它是如何工作的,也不知道如何实现它(任务必须以异步方式完成)。

再次感谢你!

此致

1 个答案:

答案 0 :(得分:10)

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

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

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

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

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