微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RXJS:具有基于带时间戳的数组的自定义时间/时钟的调度程序

如何解决RXJS:具有基于带时间戳的数组的自定义时间/时钟的调度程序

我有一些 observables 在等待实时事件时使用基于时间的运算符,如延迟、缓冲时间等,并记录了这些事件,并希望针对记录的数据而不是实时数据运行代码

我目前的想法是,可以编写一个基于滴答的自定义调度程序,内部时钟由记录事件的时间戳驱动,这样我就可以循环事件,基于时间的可观察对象将发出基于该内部时钟。然后我可以在更长的时间内测试我的软件,而不必等待那个时间真正过去。

我试图摆弄调度程序,但到目前为止还没有弄清楚。这是完全可以实现的吗?

代码在 nodejs 上运行,因此没有我必须考虑的浏览器限制(如果有)。

编辑: 刻度有自己的时间戳。可观察对象在需要当前时间时使用 scheduler.Now,当前时间应该与当前滴答的时间同步(使用的认调度程序是实时版本中的 asyncScheduler)。

  • 软件将根据传入的事件执行一些操作,这将导致它执行请求(我想用在随机合理延迟后发出的冷 observable 进行模拟)。>

  • 请求将受到速率限制,因此在安排下一次滴答时内部加载状态为真时,软件必须不做任何事情(除非滴答的时间提前了足够的时间,因此这不仅仅是请求的延迟)

  • TestScheduler 不是一个选项,因为它只适用于弹珠(据我所知)

  • 创建滴答队列的传统 rxjs 运算符不是我正在寻找的(我已经有了),我认为我需要的是具有某种虚拟时间概念的调度程序(基于滴答声)时间戳),这样我就可以在队列中循环,而不必等待任何实际时间,直到我可以继续下一个滴答声。我对 VirtualTimeScheduler 不太熟悉,但从我目前所读到的内容来看,我首先必须创建一个任务队列,然后运行它(调用调度程序的 flush 方法时)。创建任务队列是这里的问题,因为它需要是动态的,取决于输入数据(用于滴答)以及请求的结果行为和速率限制

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。