与协程作斗争,但是在通过回调将其传递到另一个网络协程之前,是否有更好的方法来使用/获取长时间运行的调用的值?我见过其他人,但比起我似乎无法在最新的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)