100ms間隔でコメントを「遅延読み込み」するコンポーネントがあります。
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));
});
}