2016-04-20 32 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

相关问题