2016-04-20 29 views
2

所以我看到了一種使用掃描的有用方法,即將函數映射到流中以更新初始值。尋找一種更清潔的方式來使用rxjs中的掃描

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

但是,如果我需要點擊的價值,我知道我可以寫一個局部

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)); 

這可能是非常有用的,如果我合併多個流,但它似乎也像它可能過於複雜。有沒有更好的方法來完成數據流和功能的傳遞?這裏是這個例子的bin link

回答

0

那麼,你應該問自己,如果你需要傳遞函數。我做你的代碼簡單一點: https://jsbin.com/timogitafo/1/edit?js,console,output

或者一個更簡單的一個:https://jsbin.com/giqoduqowi/1/edit?js,console,output

+0

謝謝您的反饋,但我張貼的問題是通過設計簡單的解釋了一個更復雜的一個地方掃描保持狀態這是從多個流合併而來的。 – jamesRH

+0

嗯,我不知道你的問題,所以我不能幫你,但你的掃描解決方案似乎很聰明。 – SuperManitu

相關問題