Mục tiêu của tôi là tạo ra một vòng lặp hoạt hình à la requestAnimationFrame
để tôi có thể làm điều gì đó như thế này:Làm cách nào để sử dụng RxJS để tạo vòng lặp requestAnimationFrame?
animationObservable.subscribe(() =>
{
// drawing code here
});
Tôi đã thử mã này như một thử nghiệm cơ bản:
let x = 0;
Rx.Observable
.of(0)
.repeat(Rx.Scheduler.animationFrame)
.takeUntil(Rx.Observable.timer(1000))
.subscribe(() => console.log(x++));
Here is a JSFiddle but I'm not liable for any browser crashes from running this.
Tôi mong đợi điều này để ghi lại các số từ 0 đến khoảng 60 (vì đó là tốc độ làm mới của màn hình) trong hơn 1 giây. Thay vào đó, nó nhanh chóng ghi lại các số (nhanh hơn nhiều so với requestAnimationFrame
sẽ), bắt đầu làm cho trang bị trễ, và cuối cùng sẽ làm tràn ngăn xếp khoảng 10000 và vài giây sau đó.
Tại sao trình lập lịch biểu animationFrame
hoạt động theo cách này và cách chính xác để chạy vòng lặp hoạt ảnh bằng RxJS là gì?
Bằng cách nào đó tôi bị mất rằng, có lẽ bởi vì khi tôi lần đầu tiên chạy vào vấn đề tôi đã không sử dụng 'of', nhưng cái gì mà cư xử khác nhau. Đột nhiên nó rõ ràng hơn nhiều. Cảm ơn! –