zoukankan      html  css  js  c++  java
  • [RxJS] Handling Multiple Streams with Merge

    You often need to handle multiple user interactions set to different streams. This lesson shows hows Observable.merge behaves like a "logical OR" to have your stream handle one interaction OR another.

    After click the start buttion, we wnat the logic that, click stop, it remember the current state, then if click start, continue with the current state.

    If click reset, then it restart from 0;

    const Observable = Rx.Observable;
    
    const startButton = document.querySelector("#start");
    const stopButton = document.querySelector("#stop");
    const resetButton = document.querySelector("#reset");
    
    const data = {count: 0};
    const inc = (acc) => ({count: acc.count + 1});
    const reset = (acc) => data;
    
    const start$ = Observable.fromEvent(startButton, 'click');
    const stop$ = Observable.fromEvent(stopButton, 'click');
    const reset$ = Observable.fromEvent(resetButton, 'click'); 
    const interval$ = Observable.interval(500);
    const intervalThatStop$ = interval$.takeUntil(stop$);
    const incOrReset$ = Observable.merge( intervalThatStop$.mapTo(inc), reset$.mapTo(reset) ); start$ .switchMapTo(incOrReset$) .startWith(data) .scan( (acc, curr) => curr(acc)) .subscribe( (x) => console.log(x))
  • 相关阅读:
    设计模式-观察者模式
    idea 生成 protobuf
    springboot @Autowride 注入空 调用时报Null空指针
    Netty 服务端创建过程
    git failed to push some refs to
    SPI simp
    Controller之statefulset
    Service
    Controller之deployment
    rabbitmq“ Login was refused using authentication mechanism PLAIN”
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5264111.html
Copyright © 2011-2022 走看看