Moim celem jest stworzenie pętli animacji à la requestAnimationFrame
tak, że mogę zrobić coś takiego:Jak mogę użyć RxJS do wygenerowania pętli requestAnimationFrame?
animationObservable.subscribe(() =>
{
// drawing code here
});
Próbowałem ten kod jako podstawowego badania:
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.
Spodziewałem się, że zarejestruję liczby od 0 do około 60 (ponieważ jest to częstotliwość odświeżania mojego monitora) przez 1 sekundę. Zamiast tego szybko rejestruje liczby (znacznie szybciej niż requestAnimationFrame
), zaczyna powodować opóźnienie strony, a na koniec przepełnia stos około 10000 i kilka sekund później.
Dlaczego harmonogram programu animationFrame
zachowuje się w ten sposób i jaki jest prawidłowy sposób uruchomienia pętli animacji z RxJS?
Jakoś brakowało mi, że prawdopodobnie dlatego, że kiedy po raz pierwszy wpadł na problem ja nie używałem 'of', ale coś, zachowywał się inaczej. Nagle jest o wiele jaśniejszy. Dzięki! –