我的目标是创建一个类似于requestAnimationFrame
的动画循环,以便我可以做到这样:
animationObservable.subscribe(() =>
{
// drawing code here
});
我尝试了这段代码作为基本测试:
let x = 0;
Rx.Observable
.of(0)
.repeat(Rx.Scheduler.animationFrame)
.takeUntil(Rx.Observable.timer(1000))
.subscribe(() => console.log(x++));
这里有一个 JSFiddle,但是请注意,运行此代码可能会导致浏览器崩溃,我不对此负责。
我原本期望它会在一秒钟内记录从 0 到大约 60 的数字(因为这是我的显示器的刷新率),但实际上,它迅速记录数字(比 requestAnimationFrame
快得多),开始导致页面卡顿,并最终在大约 10000 时出现堆栈溢出,并几秒钟后停止记录。
为什么 animationFrame
调度程序会表现出这种方式,以及使用 RxJS 运行动画循环的正确方法是什么?
of
,而是使用了一个行为不同的东西。现在突然间更加清楚了。谢谢! - Kendall Frey