Борьба с сопрограммами, но есть ли лучший способ использовать / получить значение для продолжительного вызова здесь, прежде чем передать его в другую сетевую подпрограмму с обратным вызовом?Я видел других, но я не могу использовать это значение в последнем выпуске дроида-сопрограммы, как будто я не могу заставить это работать Kotlin Coroutines с возвращаемым значением
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 (
}
}
Спасибо за любую помощь
edit: Я думаю, что на самом деле искал немного другое с
suspend fun launchGeneratePayload(): String? =
withContext(Dispatchers.Default) {
try {
slowStringGeneration() //slow
} catch (e: java.lang.Exception) {
null
}
}
}
Позже добавлю в качестве ответа, если я еще не включился в это / еще.