确定何时流 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