寻找一种更清洁的方式在rxjs中使用扫描

时间:2016-04-20 17:09:26

标签: javascript 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));

如果我合并多个流,这可能非常有用,但它看起来也可能过于复杂。有没有更好的方法来完成传递数据和功能?以下是此示例link

的bin

1 个答案:

答案 0 :(得分:0)

好吧,你应该问问自己是否需要传递功能。我让你的代码更简单: https://jsbin.com/timogitafo/1/edit?js,console,output

或者更简单的一个:https://jsbin.com/giqoduqowi/1/edit?js,console,output