首页 > 解决方案 > 可观察到的,它发出精确地按一定时间间隔分开的事件

问题描述

我想创建一个每个时间间隔发出的 Observable,比如说每 100 毫秒。

如果我尝试使用timer方法,我看到的是 2 个事件之间的实际时间间隔总是大于 100 几毫秒。方法也是如此interval

这是我用来测量间隔的片段

const obsTime = Observable.timer(0,100).map(d => d + 1).take(30);

let t0 = Date.now();
let t1;
const timeIntervals = new Array<number>();
obsTime
.do(() => t1 = Date.now())
.do(() => timeIntervals.push(t1 - t0))
.do(() => t0 = t1)
.subscribe(null, null, () => console.log(JSON.stringify(timeIntervals)));

这是我打印的结果

[2,105,103,101,103,106,102,105,103,106,105,103,105,105,105,105,106,105,102,101,105,105,104,102,105,103,106,102,101,105]

我的问题是:是否有可能获得一系列精确发射 100 毫秒距离的事件?

我不认为这与 CPU 的时钟或速度有关,因为我在相当新且功能强大的 Mac 上运行,它基本上是空闲的。

标签: rxjs

解决方案


推荐阅读