2

如果代码中出现某些情况,我想取消 kotlin 流程。

假设我有一个方法如下

fun test(): Flow<String> = flow {
    val lst = listOf("A", "B", "C")

    while(true) {
        lst.forEach { emit(it) }

    //If some condition occurs, need to return from here, else continue
    //How to stop flow here
    }
}

并称它为

test().collect { println(it)}

问题是,如何在特定条件下(来自流程构建器或外部)停止流程以产生任何东西?

4

1 回答 1

4
fun test(): Flow<String> = flow {
    val lst = listOf("A", "B", "C")

    while(true) {
        lst.forEach { emit(it) }

        if (someCondition) {
            return@flow
        }
    }
}

return@flow立即从flowlambda 返回,因此流程将结束。作为另一种选择,当您的条件发生时,您可以只break循环while(true)

于 2020-01-28T20:27:11.227 回答