我想创建一个每隔一段时间发出一个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上运行,这基本上是空闲的。