确定何时流 returns 无数据
Determining when a Flow returns no data
Kotlin 流程说明如下:
A suspending function asynchronously returns a single value, but how
can we return multiple asynchronously computed values? This is where
Kotlin Flows come in.
但是,如果我的流程来源是这样的,当它完成时 returns 没有数据,有没有办法从流程中确定这一点?例如,如果流的源调用后端 API 但 API returns 没有数据,有没有办法确定流何时完成并且没有数据?
您可以只对流执行 toList()
并检查它是否为空
如果APIreturn是一个Flow
,那么通常期望return0个或更多个元素。该流通常会被一些代码收集起来以处理这些值。 collect()
调用是一个挂起函数,将在流程完成时 return:
val flow = yourApiCallReturningFlow()
flow.collect { element ->
// process element here
}
// if we're here, the flow has completed
任何其他终端操作员,如 first()
、toList()
等,将以某种方式处理流程的完成(甚至可能提前取消流程)。
我不确定你在这里寻找什么,但是例如有一个终端操作员 count:
val flow = yourApiCallReturningFlow()
val hasAnyElement = flow.count() == 0
Kotlin 流程说明如下:
A suspending function asynchronously returns a single value, but how can we return multiple asynchronously computed values? This is where Kotlin Flows come in.
但是,如果我的流程来源是这样的,当它完成时 returns 没有数据,有没有办法从流程中确定这一点?例如,如果流的源调用后端 API 但 API returns 没有数据,有没有办法确定流何时完成并且没有数据?
您可以只对流执行 toList()
并检查它是否为空
如果APIreturn是一个Flow
,那么通常期望return0个或更多个元素。该流通常会被一些代码收集起来以处理这些值。 collect()
调用是一个挂起函数,将在流程完成时 return:
val flow = yourApiCallReturningFlow()
flow.collect { element ->
// process element here
}
// if we're here, the flow has completed
任何其他终端操作员,如 first()
、toList()
等,将以某种方式处理流程的完成(甚至可能提前取消流程)。
我不确定你在这里寻找什么,但是例如有一个终端操作员 count:
val flow = yourApiCallReturningFlow()
val hasAnyElement = flow.count() == 0