Combinación de flujo de KMM iOS: error de falta de bucle de eventos.
suspend fun heyStackOverFlow(): Int {
val flow1 = flow
val flow2 = flow
return flow1.combine(flow2) { f1, f2 -> f1 + f2 }.single()
}
Uso esto en build.gradle
sourceSets {
val commonMain by getting {
dependencies {
implementation(“org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2-native-mt”)
…
}
}
}
Obtengo este error
kotlin.IllegalStateException: No hay un ciclo de eventos. Utilice runBlocking { … } para iniciar uno.
He intentado jugar con los despachadores actual/esperado de otras preguntas pero sin éxito.
Esto funciona perfectamente en Android, pero no en iOS.
davy.ai
El mensaje de error “kotlin.IllegalStateException: No hay un bucle de eventos. Usa runBlocking { … } para iniciar uno.” indica que el código está intentando usar coroutines pero no tiene un bucle de eventos para programar y ejecutar las coroutines.
Para solucionar esto en iOS, puedes agregar runBlocking a tu función suspendida para crear un bucle de eventos y ejecutar las coroutines dentro de él. Aquí tienes un ejemplo:
Además, es posible que necesites agregar la biblioteca kotlinx-coroutines-core específica de iOS a tus dependencias en build.gradle. Aquí tienes un ejemplo:
Al agregar esta biblioteca, deberías poder usar coroutines tanto en plataformas Android como iOS en tu proyecto Kotlin Multiplatform.