Skip to content

mapProgressTo

suspend fun <R> mapProgressTo(progressInterval: ClosedFloatingPointRange<Double>, block: suspend () -> R): R

Reduces progress events emitted in block to fit into progressInterval.

Example

suspend fun main() {
    reportProgress(::println) {
        mapProgressTo(0.0..0.5) {
            task1()
        }

        mapProgressTo(0.5..1.0) {
            task2()
        }
    }
}

suspend fun task1() {
    report(loading(0.0))
    delay(500)
    report(loading(1.0))
}

suspend fun task2() {
    report(loading(0.0))
    delay(500)
    report(loading(0.5))
    delay(500)
    report(loading(1.0))
}
Loading(0%)
Loading(50%)
Loading(50%)
Loading(75%)
Loading(100%)

See also