当块在 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)
方法来延迟执行。
根据您想要并行执行某些操作的评论,您可以在一个作用域中启动 2 个协程。他们将运行相互独立:
fun hereIsAFunction(): Flow<Type> = flow {
coroutineScope {
launch {
(0..100).forEach {
delay(1000)
emit(...)
}
}
launch {
usingOtherFunction()
}
}
}
所以我有这个功能,我可以用流发出值,但我需要定期发送值,所以我使用了:
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)
方法来延迟执行。
根据您想要并行执行某些操作的评论,您可以在一个作用域中启动 2 个协程。他们将运行相互独立:
fun hereIsAFunction(): Flow<Type> = flow {
coroutineScope {
launch {
(0..100).forEach {
delay(1000)
emit(...)
}
}
launch {
usingOtherFunction()
}
}
}