typescript - RxJS hent verdier før/etter emisjon av Observable
Jeg vil gjerne beregne en forskjell mellom utslippene til en enkelt Observable.
Finnes det en måte å få både den nåværende og forrige utsendelsen fra en Observable hvis den sender ut en ny verdi? Jeg ønsker noe som dette:
ob$.subscribe(val => {
console.log(val)
// First emission: [1,2,3]
// Second emission: [1,2,3,4]
console.log(arrayDifference(before, after)) // [4]
})
Hvordan skulle jeg gå fram med det? Må jeg lagre hver emisjon i en variabel på et øvre nivå, eller finnes det en fancy RxJS-måte å gjøre dette på?
Svar #1
Bruk skanneoperatøren for å sjekke den forrige verdien
const arrayDifference = (before, after) => {
// Immlement the fuction here
const difference = .........
return difference
}
ob$.pipe(scan((before,after) => arrayDifference(before,after), [])).subscribe(val => console.log(val))
Dette burde fungere
Svar #2
Du kan gjøre det med bufferCount-operatoren som er veldig modulær:
bufferCount(2, 1)
Den vil opprette en ny buffer på størrelse 2 etter hver 1 emisjon fra kilden.
Alternativt finnes det også pairwise()-operatoren som gjør akkurat det samme.
