Код IT
← Каталог

Flow в Kotlin — Дополнительный пример — retry с ограничением попыток

Фрагмент из «Flow в Kotlin»: Дополнительный пример — retry с ограничением попыток.

Kotlin main.kt
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.*
import java.io.IOException

fun unstableApi(): Flow<String> = flow {
    emit(fetchRemoteValue()) // может бросить IOException
}.retryWhen { cause, attempt ->
    if (cause is IOException && attempt < 3) {
        delay(200L * (attempt + 1))
        true
    } else {
        false
    }
}
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.*
import java.io.IOException

fun unstableApi(): Flow<String> = flow {
    emit(fetchRemoteValue()) // может бросить IOException
}.retryWhen { cause, attempt ->
    if (cause is IOException && attempt < 3) {
        delay(200L * (attempt + 1))
        true
    } else {
        false
    }
}