【发布时间】:2018-06-25 11:35:16
【问题描述】:
我有一个永无止境的流作为一个序列。 我的目标是根据时间和大小从序列中抽取一批。
我的意思是,如果我的序列现在有 2250 条消息,我想发送 3 批(1000、1000、250)。
另外,如果到下一个 5 分钟我还没有积累 1000 条消息,我无论如何都会发送到目前为止积累的任何信息。
sequence
.chunked(1000)
.map { chunk ->
// do something with chunk
}
我期望拥有的是 .chunked(1000, 300) 之类的东西,当我想每 5 分钟发送一次时,300 是第二个。
提前致谢
【问题讨论】:
-
我一直在搜索,但找不到任何相关问题。如果您知道任何相关的链接,将不胜感激。
-
Kotlin 序列通常不处理时间的概念,它们上没有一个运算符会延迟或任何类似的事情。这更多地属于协程领域,可能有类似的东西,或者您可以将自己的运算符实现为扩展函数,它可以满足您的需要,但您愿意。
-
我很难相信我是第一个研究这个问题的人,但同时找不到合适的东西
-
你肯定不是第一个 - Rx 可能已经涵盖了这一点,只是序列还不支持这些操作。
-
谢谢。如果有适合我的协程解决方案。
标签: kotlin collections kotlin-coroutines