Redux 如何获取RxJS中在一秒钟内发生的最近事件?

Redux 如何获取RxJS中在一秒钟内发生的最近事件?,redux,rxjs,rxjs6,Redux,Rxjs,Rxjs6,我有一个可观察的(redux史诗)。我尝试按时间分组活动。我使用bufferTime,但此运算符不等待第一个操作:( action$.pipe( ofType(“SOME_REDUX_ACTION”),//自定义筛选器运算符 缓冲时间(1000), 轻触((事件)=>console.log(“为什么?”,事件)) 过滤器(events=>!!events.length), [...] 电流输出: WHY? [] WHY? [] WHY? [] WHY? [] WHY? [] WHY? [] W

我有一个可观察的(redux史诗)。我尝试按时间分组活动。我使用bufferTime,但此运算符不等待第一个操作:(

action$.pipe(
ofType(“SOME_REDUX_ACTION”),//自定义筛选器运算符
缓冲时间(1000),
轻触((事件)=>console.log(“为什么?”,事件))
过滤器(events=>!!events.length),
[...]
电流输出:

WHY? []
WHY? []
WHY? []
WHY? []
WHY? []
WHY? []
WHY? []
WHY? [event1,event2]
WHY? []
WHY? []
WHY? []
WHY? [event3]
不带过滤器的预期输出

WHY? [event1,event2]
WHY? [event3]

我想你可以试试这个:

actions$=actions$.pipe(share())
动作$管道(
缓冲区(
动作$.pipe(去BounceTime(1000))
)
/* ... */
)
event1
到达时,它将被添加到内部
缓冲区
,计时器(从
debounceTime
)将启动。如果
event2
在计时器结束之前到达,它将被添加到
缓冲区
和一个新计时器(
1s
)将启动。当
1s
通过时,将发送收集的项目,在这种情况下,
event1
event2


event3
到达时,它将被添加到
缓冲区
,如果在
1s
期间没有其他值到达,它将发出
event3

我想您可以尝试以下方法:

actions$=actions$.pipe(share())
动作$管道(
缓冲区(
动作$.pipe(去BounceTime(1000))
)
/* ... */
)
event1
到达时,它将被添加到内部
缓冲区
,计时器(从
debounceTime
)将启动。如果
event2
在计时器结束之前到达,它将被添加到
缓冲区
和一个新计时器(
1s
)将启动。当
1s
通过时,将发送收集的项目,在这种情况下,
event1
event2


event3
到达时,它将被添加到
缓冲区
,如果在
1s
期间没有其他值到达,它将发出
event3

,因此您希望在第一个值到达时开始缓冲,然后每1s开始缓冲?我希望缓冲时间不被“循环”。我担心我的应用程序的性能。我必须每秒筛选空数据以达到预期效果。那么缓冲逻辑应该是什么?1等待事件2时事件到达开始计数1秒,并将所有后续事件分组(在1秒内).3发出带有分组事件的事件并停止计时器4再次等待事件,如果出现启动新的1秒时间,RI希望达到与“去BounceTime”类似的效果,但是,要知道在某个特定时间内发生的所有事件。因此,您希望在第一个值到达时开始缓冲,然后每个1s?我希望bufferTime不被“循环”。我担心我的应用程序的性能。我必须每秒筛选空数据以达到预期效果。那么缓冲逻辑应该是什么?1等待事件2时事件到达开始计数1秒,并将所有后续事件分组(在1秒内).3发出带有分组事件的事件并停止计时器4再次等待事件,如果出现“开始新的1秒时间”,RI希望达到与“去BounceTime”类似的效果,但是,要知道在特定时间内发生的所有事件。