我有一个组件,它以100毫秒的间隔“延迟加载”一些注释。
当我使用setTimeout时,它确实很慢。
零件
<div *ngFor="let post of posts">
<app-post [post]="post" ></app-post>
</div>
这使我的应用程序延迟(平均fps 14,空闲时间51100ms):
while(this.postService.hasPosts()){
setTimeout(()=> {
this.posts.push(this.postService.next(10));
},100);
}
这使我的应用程序流畅(平均fps 35,空闲时间40800ms)
while(this.postService.hasPosts()){
timer(100).subscribe(()=> {
this.posts.push(this.postService.next(10));
});
}
有什么解释,为什么rxjs计时器能更好地工作?
我使用firefox进行了运行时分析。在第一个示例中,帧速率降至14 fps;在另一个示例中,帧速率降至35 fps。
甚至空闲时间也减少了20%。
此方法更加平滑(平均fps 45,空闲时间13500ms):
interval(100).pipe(takeWhile(this.postService.hasPosts()).subscribe(()=> {
this.posts.push(this.postService.next(10));
});
}