繁体   English   中英

Kotlin:如何将值从 lambda 返回到父 function?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM