[英]Kotlin: How to return a value from a lambda to a parent function?
如何将String(bytes)
返回到 getPost function,这样我就可以println(getPost(123))
并打印 String(bytes) 的值?
fun getPost(id: Int) {
Fuel.get("https://kitsu.io/api/edge/posts/$id")
.response { request, response, result ->
val(bytes, error) = result
if(bytes != null) {
println(String(bytes))
//I want to return String(bytes)
}
}
}
您使用的 API 是异步 API,它是基于回调的。 这意味着您在此处拥有的 lambda 是异步运行的,并且当您的getPost
function 返回时可能尚未运行。 因此,从getPost
返回时无法获得其结果。
要以类似同步的方式处理这种情况,同时保留异步执行的好处,您可以使用suspend
函数和 Kotlin 协程。 Fuel还有一个额外的模块可以用来做这 件事:https://fuel.gitbook.io/documentation/support/fuel-coroutines
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.