首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无漂移的可观测区间

无漂移的可观测区间
EN

Stack Overflow用户
提问于 2017-12-23 03:57:17
回答 1查看 206关注 0票数 3

我正在使用Observable.interval在指定的时间安排代码执行:

代码语言:javascript
复制
let obs =  Observable.interval(50).subscribe(()=>{
  console.log(this.currentFrame+" "+new Date().getTime());
  this.currentFrame++
});

这是输出。正如你所看到的,在6次迭代之后,我已经有了10ms的漂移。我如何使用Observable.interval,同时又指定它需要根据当前的漂移重新计算下一次迭代?

代码语言:javascript
复制
 0 1513972329849
 1 1513972329901
 2 1513972329952
 3 1513972330004
 4 1513972330057
 5 1513972330110
EN

回答 1

Stack Overflow用户

发布于 2017-12-23 22:48:37

在@cartant的修复被重新调用之前,您可以使用expand并自己创建行为。假设delay将始终向前漂移,请尝试以下操作:

代码语言:javascript
复制
function correcting_interval(interval) {
  const start_time = new Date().getTime();
  return Observable.of(-1)
                   .expand(v => Observable.of(v + 1).delay(interval - (new Date().getTime() - start_time) % interval))
                   .skip(1);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47946750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档