当块在 Runnable 体内时发出 Flow 值

Emit Flow values when the block is inside Runnable body

所以我有这个功能,我可以用流发出值,但我需要定期发送值,所以我使用了:

fun hereIsAFunction(): Flow<Type> = flow {
    Handler.postDelayed({
        //This is in Runnable and I can't emit values
        emit(value) //Error 'Suspension function can only be called within Coroutine body
    }, 1000)

    usingOtherFunction()
}

我不想阻止函数 'usingOtherFunction()',这就是我使用可运行对象的原因

问题:有没有什么方法可以通过周期性事件使用 Flow 发出值?如果是,我应该看什么?

流建立在协程之上。可以使用协程的delay(time)方法来延迟执行。

此处有更多详细信息:https://developer.android.com/kotlin/flow#create

根据您想要并行执行某些操作的评论,您可以在一个作用域中启动 2 个协程。他们将运行相互独立:

fun hereIsAFunction(): Flow<Type> = flow {
    coroutineScope {
        launch {
            (0..100).forEach {
                delay(1000)
                emit(...)
            }
        }
        launch {
            usingOtherFunction()
        }
    }
}