Javascript 使用RxJS每350毫秒触发一次队列事件

Javascript 使用RxJS每350毫秒触发一次队列事件,javascript,rxjs,reactivex,Javascript,Rxjs,Reactivex,我有一个导致播放动画的键盘事件。用户可能会产生比动画播放速率更多的事件,因此我想创建一个队列,在一定的延迟后,该队列最终将逐个清空触发 所需大理石图: ================================================= user: START|a-b-c----------------------------- result: START|-350ms--a--350ms--b--350ms--c----- =====================

我有一个导致播放动画的键盘事件。用户可能会产生比动画播放速率更多的事件,因此我想创建一个队列,在一定的延迟后,该队列最终将逐个清空触发

所需大理石图:

=================================================

user:    START|a-b-c-----------------------------

result:  START|-350ms--a--350ms--b--350ms--c-----

=================================================
用户以b c的形式快速触发3个事件。事件a触发后,350毫秒计时器启动。该计时器完成后,结果将触发一个并启动另一个350毫秒计时器。定时器完成后,它触发b。基本上,如果计时器正在运行,我希望将其添加到队列中,稍后再发出。速率不能超过350毫秒,我想要每一个事件

我想将事件的输出限制在350ms,但我不想使用油门操纵器,因为我不想失去任何我希望a、b和c触发的事件


Javascript RxJS解决方案是首选方案,但我会接受Rx运营商以任何语言给出的任何答案。

这似乎可以解决问题:

import { fromEvent, concat, timer } from 'rxjs';
import { tap, concatMap, filter } from 'rxjs/operators';

fromEvent(document, 'keypress')
.pipe(
  filter((e: KeyboardEvent) => e.code === 'Space'),
  concatMap(() => timer(350))
).subscribe(console.log)
编辑:concat操作符是冗余的。删除