2015-07-08 11 views
13

Ho un osservabile il tracciamento della posizione di scorrimentoGet differenza tra due valori di un RxJS osservabili

const scroll = Observable 
    .fromEvent(document, 'scroll') 
    .map(e => window.pageYOffset) 
    .startWith(0) 

mi piacerebbe avere una seconda osservabile tracciamento delta di scorrimento (newScroll - lastScroll)

const scrollDelta = scroll 
    // ??? 
    .subscribe(delta => console.log('delta:', delta)) 

Come implementare qualcosa di simile? Ho provato con scansione senza successo. Thx

risposta

16

Uso pairwise:

scroll 
    .pairwise() 
    .map([a, b] => b - a); 
+0

Grazie, Brandon! –

+0

C'è un modo per farlo se la nostra variabile osservata è un oggetto? Vorrei recuperare la differenza tra valore precedente e valore attuale, è in qualche modo possibile farlo? – Alex

6

vecchia questione, ma per aggiungere informazioni per RxJS versione 5, dove la superficie API è cambiato un po 'e mi c'è voluto un po' di tempo per trovare la risposta: l'equivalente di pairwise sarebbe bufferWithCount(2,1) (v4) o bufferCount(2,1) (v5).

+1

È stato aggiunto di nuovo in beta1. https://github.com/ReactiveX/RxJS/commit/1432e59 – FarazShuja

+0

Grazie per le informazioni. A volte può essere necessario un po 'di tempo per rintracciare i nomi degli operatori ribattezzati. –