访问rxjs中可观察的先前状态

时间:2018-07-18 16:48:59

标签: rxjs

我的状态可以取-开启,干燥和关闭 我已经编写了一个选择器以从商店访问它。 基本上,如果state =“ dry”,我必须做些事情。但是,如果状态从关闭变为“干燥”,则我不应该执行该操作。

我可以通过某种方式访问​​先前的值吗?

export const EnvironmentSelector = createSelector(S1selector, S2selector,
(s1, s2) => {
if (s1=="foo" && s2=== "dry")
    return true;
 else
    return false;
});

this.systemStateEnvironmentSelector$ =this.store.select(EnvironmentSelector);
this.systemStateEnvironmentSelector$.subscribe(val => {
    if (val) {
        //call api()`enter code here`
    }
});

1 个答案:

答案 0 :(得分:0)

您可以使用扫描来创建状态堆栈,其中堆栈[1]为最新状态,堆栈[0]为先前状态。然后,您可以添加条件逻辑。

this.systemStateEnvironmentSelector$.scan((curr,stack)=>{
  stack.push(curr)
  stack.shift()
  return stack
},[null,null])
..... further conditional operation
.subscribe(console.log)