rxjs - 可观察到的,它发出精确地按一定时间间隔分开的事件
问题描述
我想创建一个每个时间间隔发出的 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 上运行,它基本上是空闲的。
解决方案
推荐阅读
- colors - SAS:如何在单个热图中组合颜色渐变比例?
- c# - 使用定义的类填充数据网格视图?
- c# - 构建程序后分辨率会发生变化
- java - 如何在使用 PrintService 打印之前更改文本的字体或大小
- django - Django 我无法使用不同的 URL 加载我想要的视图
- python - 熊猫的数据框没有显示我需要的所有信息
- variables - 从 Junos 节点获取事实并使用它们形成将在其他戏剧中使用的变量
- reporting-services - SSRS Report Builder 3.0 我可以使用参数作为表名吗?
- php - Laravel - 我们如何获得选择选项的值和文本?
- c# - 我的 CalDav 客户端 c# 返回 400 错误请求,如何解决?