小编Wes*_*unt的帖子

Kotlin协程,是否有更好的方法返回此值?

与协程作斗争,但是在通过回调将其传递到另一个网络协程之前,是否有更好的方法来使用/获取长时间运行的调用的值?我见过其他人,但比起我似乎无法在最新的droid协程发布版中使用此值,就像我似乎无法使此工作具有返回值的Kotlin协程

private suspend fun launchGeneratePayload(): String? { 
    return withContext (Dispatchers.Default) {
        try {
            val payloadString = slowStringGeneration()//Slow
            return@withContext payloadString
        } catch (e: java.lang.Exception) {
            return@withContext null
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

最终使用价值的地方

public someFunction(callback: CallBack) {      
    val params: JSONObject = JSONObject()
    params.put("param1", "param1Value")
    runBlocking{ //probably should be launch or similar
        val payload = launchGeneratePayload()
        params.put("param2", payload)
        //call network function with params & callback
        //networkCall (
    } 
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

编辑:我认为实际上正在寻找与只是有点不同

suspend fun launchGeneratePayload(): String? =
    withContext(Dispatchers.Default) {
        try {
            slowStringGeneration() //slow …
Run Code Online (Sandbox Code Playgroud)

android kotlin kotlin-coroutines

5
推荐指数
1
解决办法
1051
查看次数

标签 统计

android ×1

kotlin ×1

kotlin-coroutines ×1