2016-04-20 3 views
2

So habe ich eine nützliche Möglichkeit zur Verwendung von Scan, wo Sie eine Funktion auf den Strom zuordnen, um einen Anfangswert zu aktualisieren gesehen.Suche nach einem saubereren Weg zur Verwendung von Scan in rxjs

const initialState = false; 
const notThis = (x) => !x; 
const toggle = clicks.map(()=> notThis) 
    .startWith(initialState) 
    .scan((acc,curr)=> curr(acc)) 

Aber wenn ich die Werte von Klicks benötigen ich weiß, ich kann eine teilweise schreiben

const initialState = {klass:'',bool:false}; 
const toggle = clicks 
    .map((y)=> { 
    return (x) => { 
     let klass = y.target.className; 
     let bool = !x.bool; 
     return ({klass, bool}); 
    }; 
    }) 
    .startWith(initialState) 
    .scan((acc,curr)=> curr(acc)); 

Diese sehr sein könnte nützlich, wenn ich mehrere Streams bin Verschmelzung, aber es scheint auch, wie es übermäßig sein könnte kompliziert. Gibt es eine bessere Möglichkeit, Daten und Funktionen im Stream zu übergeben? Hier ist ein Behälter dieses Beispiels link

Antwort

0

Nun, Sie sollten sich fragen, ob Sie Funktionen übergeben müssen. Ich habe Ihren Code ein bisschen einfacher: https://jsbin.com/timogitafo/1/edit?js,console,output

Oder eine noch einfacheren: https://jsbin.com/giqoduqowi/1/edit?js,console,output

+0

Vielen Dank für Ihre Rückmeldung, aber das Problem war ich von Design einfach geschrieben, um einen viel kompliziert dar, in dem Scan-Zustand hält das wird aus mehreren Streams zusammengeführt. – jamesRH

+0

Nun, ich weiß nicht, über Ihr Problem, so kann ich Ihnen nicht helfen, aber Ihre Lösung mit Scan schien sehr schlau. – SuperManitu

Verwandte Themen