订阅者较少的许多rxjs`interval`与订阅者众多的`interval`较少

时间:2020-10-13 05:31:53

标签: javascript rxjs

我正在使用一个大型Angular应用程序(ng9),该应用程序使用很多轮询计时器。我们大量利用网络工作者来提取和转换来自网络套接字的数据。主线程定期轮询工作者以获取数据,通常在100毫秒至1000毫秒之间。从那里开始,UI呈现也是周期性的,通常每100毫秒(对于“实时”折线图)刷新到1000毫秒(对于行情指示器和状态信号)。在我们当前的实现中,任何需要轮询的组件都会实例化本地rxjs interval流。例如,我们的首选模式是:

interval(200)
  .pipe(takeUntil(this.onDestroy$))
  .subscribe(() => this.doMyPeriodicThing());

如果用户正在限制应用程序的限制,我估计可能会同时运行50-100个间隔计时器。就是说,大概只有几个不同的时期,例如:100ms,200ms,300ms,500ms和1000ms。在我看来,创建像PollingService这样的东西可以提供标准的轮询频率可能会更有效。看起来可能像这样:

this.pollingService.every200msUntil(this.onDestroy$)
  .subscribe(() => this.doMyPeriodicThing());

很显然,如果运行的实际计时器更少,那么我们浪费更少的开销来跟踪超时事件。但是,每个超时事件发生的处理量都会增加,我认为这可能会产生有害的突发影响。我不知道运行一堆计时器有多麻烦。也许对于Javascript引擎来说这完全是微不足道的,甚至不值得担心。

无论如何,我想我会在自己编写实验代码之前先问一下。任何专家的经验和分析表示赞赏!谢谢!

0 个答案:

没有答案
相关问题