ZERO

object ZERO : Limiter

Limiter 的默认值实现,offsetlimit 均恒等于 0

Functions

Link copied to clipboard
fun of(offset: Int = ZERO.offset, limit: Int = ZERO.limit, batchSize: Int = ZERO.batchSize): Limiter

根据参数得到 Limiter 实例。

Link copied to clipboard
fun ofPage(pageSize: Int, pageNum: Int): Limiter

根据分页信息计算得到limiter。

Properties

Link copied to clipboard
open override val batchSize: Int

对于部分平台的实现中,很有可能是分批次查询来获取结果的。 当平台支持的时候,可以通过 batchSize 来指定一个批次大小来限制其内部每次对于API的请求数量。

Link copied to clipboard
open override val limit: Int

限流数量,即本次所得数据量最大不应超过此限制。 例如 limit = 10, 那么返回值结果中的最终元素数量应当 <= 10.

Link copied to clipboard
open override val offset: Int

偏移量,即从第 offset 条数据开始返回。 偏移量预期中的基数为 0, 即如果为 0 或者小于 0, 则代表从第一条数据开始获取。

Extensions

Link copied to clipboard
inline operator fun Limiter.component1(): Int

Limiter 解构扩展,第1个属性,相当于 Limiter.offset

Link copied to clipboard
inline operator fun Limiter.component2(): Int

Limiter 解构扩展,第2个属性,相当于 Limiter.limit

Link copied to clipboard
inline operator fun Limiter.component3(): Int

Limiter 解构扩展,第3个属性,相当于 Limiter.batchSize

Link copied to clipboard

得到当前 Limiter 中等价的分页属性:每页数量。计算方式大概类似于 pageNum = offset / pageSize.

Link copied to clipboard

得到当前 Limiter 中等价的分页属性:页码大小。相当于 Limiter.limit.

Link copied to clipboard
inline fun <T> Limiter.toFlow(crossinline collector: suspend FlowCollector<T>.(batchSize: Int) -> Unit): Flow<T>

参数提供 Limiter.batchSize, receiver为 FlowCollector, flow的结果通过 withLimiter 限流

Link copied to clipboard
inline fun <T> Limiter.toSequence(crossinline block: suspend SequenceScope<T>.(batchSize: Int) -> Unit): Sequence<T>

参数提供 Limiter.batchSize, receiver为 SequenceScope, sequence的结果通过 withLimiter 限流