• [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))
  • 相关阅读:
    link和@import引入css 区别,不建议使用@import
    centos8常用配置记录
    python获取txt文件中关键字的数量
    U盘装Centos7的异常记录
    Linux下密码安全策略配置
    CPU负载及利用率解析
    curl命令的简单使用(ftp)
    JVM工作原理及参数说明
    grafana使用mysql做数据源
    ZABBIX监控ESXI主机
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5264111.html
Copyright © 2020-2023  润新知