我有一个函数,该函数使用Anko's异步来调用Google的Distance API,并获取从一个位置到另一个位置的距离。不幸的是,我不知道如何从异步内部获取数据并将其传递给另一个函数。代码看起来像这样
fun getDistance(location1:LatLng,location2:LatLng){
async{
val result = URL(url).readtext()
uithread{
//Parser
//distance value
}
}
}
我也想提一提我对Kotlin或android开发来说真的很新,请客气。
有很多方法可以解决这个问题;将对象与数组一起传递到函数中,然后在函数中重新排列,或者执行类似以下操作:
fun getDistance(location1 : LatLng, location2 : LatLng, f: (Long) -> Unit){
doAsync{ // Anko is deprecated as I have been made aware
val result = URL(url).readtext()
val distance : Long = // parse result
uiThread{
f(distance)
}
}
}
并使用]致电>
getDistance(loc1, loc2) { toast("The found distance was $it") }
这绝不是唯一的方法;您可以更新一个更大范围的变量,调用一个侦听器,将经纬度放在一个具有被调用的更新函数的类中,或者用其他很多我懒得考虑的方式:)