【发布时间】:2019-02-28 16:40:52
【问题描述】:
在协程上苦苦挣扎,但是在将它传递到另一个网络协程与回调之前,有没有更好的方法来使用/获取长时间运行的调用的值?我见过其他人,但我似乎无法在最新的 droid 协程版本中使用该值,就像我似乎无法完成这项工作 Kotlin Coroutines with returning value
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
}
}
}
值最终用在哪里
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 (
}
}
感谢您的帮助
编辑:我认为实际上寻找的只是有点不同
suspend fun launchGeneratePayload(): String? =
withContext(Dispatchers.Default) {
try {
slowStringGeneration() //slow
} catch (e: java.lang.Exception) {
null
}
}
}
稍后将添加作为答案,以防我仍然不在此/其他方面。
【问题讨论】:
-
使用作用域协程,了解挂起和等待,你会喜欢的。
标签: android kotlin kotlin-coroutines