【发布时间】:2018-04-10 11:58:30
【问题描述】:
假设我有一个可观察的以每秒 x0 次发射(可能是 50、60...)的速度发射,有时它只是每秒 1 或 2 次发射。
现在我怎样才能缓冲那些快速发射并仍然处理慢速发射。
我累了什么:
BufferTime 需要一个时间跨度,因此即使一次发射它也会被缓冲,(加上 BufferTime 会使量角器测试超时)。
BufferCount(x) 在收到所有 x 个发射之前不会发射。
【问题讨论】:
-
你是在描述这个:保持一个发射 X 时间,如果另一个发射在 X 到期之前进入,那么缓冲它们。缓冲到 Y 的最大时间或直到发射没有在 X 之前出现(以先到者为准)。因此,慢发射会延迟 X,而快速发射会延迟 X 和 Y。基本上是用于缓冲的 debounce 运算符。
-
我不明白问题出在哪里
-
@martin as bygrace 说类似 debounce 但用于缓冲(即,将值作为数组返回而不是忽略它们)
-
听起来你可以使用
bufferTime(time, null, size)。这最多缓冲size项或任何较少数量的项目,最多为time。 -
或者你可以使用
source.buffer(source.debounceTime(X)),这样它就会缓冲直到执行去抖动。如果您能提供一个通过流的消息的实际示例以及它们的时间以及您对如何缓冲它们的期望,这将有所帮助。