尝试使用RXJS和Scheduler。最后,我希望在滚动事件上有一个请求动画帧。
问题: 我收到类型错误:属性animationFrame不存在于调度程序类型
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
import 'rxjs/add/observable/of';
import 'rxjs/add/observable/timer';
import 'rxjs/add/operator/repeat';
import 'rxjs/add/operator/takeUntil';
import { Scheduler } from 'rxjs/Scheduler';
Observable
.of(0, Scheduler.animationFrame) // error here
.repeat()
.takeUntil(Observable.timer(1000))
.subscribe(() => console.log(x++));
如何识别animationFrame?
答案 0 :(得分:5)
由于rxjs@6.0.0 animationFrame
已重命名为animationFrameScheduler
,因此必须从rxjs
导入。
import { animationFrameScheduler } from 'rxjs';
答案 1 :(得分:4)
如果您想使用AnimationFrameScheduler
,则需要导入它。 Scheduler
是一般调度程序类。见https://github.com/ReactiveX/rxjs/blob/master/src/scheduler/animationFrame.ts
import { animationFrame } from 'rxjs/scheduler/animationFrame';
然后像这样使用它:
Observable.of(0, animationFrame)
答案 2 :(得分:1)
它可能有点令人困惑,但顶级导出Scheduler
和rxjs/Scheduler
是不同的 - 先前对象包含要使用的调度程序的实例,后者是用于实例化它们的类。所以要获得animFrame调度程序实例,
import { animationFrame } from 'rxjs/scheduler/animationFrame';
我已根据评论建议编辑了答案,因为建议最好直接导入个人而不是从顶级导入某些内容。一旦进行顶级导入,它将进行所有操作员修补等,立即加载整个库,因此需要谨慎使用。 (或者更好的不是一般)。