zoukankan      html  css  js  c++  java
  • [RxJS] Updating Data with Scan

    You often need to update the data flowing through the stream with custom logic based on what you need to output. This lesson covers how to use scan for collecting and updating the outputs as your stream progresses.

    EVerytime we click start button now it will start from 0:
    const Observable = Rx.Observable;
    
    const startButton = document.querySelector('#start');
    const stopButton = document.querySelector('#stop');
    
    const start$ = Observable.fromEvent(startButton, 'click');
    const interval$ = Observable.interval(1000);
    const stop$ = Observable.fromEvent(stopButton, 'click');
    
    const intervalThatStop$ = interval$.takeUntil(stop$);
    
    
    start$.switchMapTo(intervalThatStop$)
      .subscribe( (x) => {
      console.log(x);
    })

    What we want is it should remeber the current state, so that, next time when we start again, it can use our current state:

    const Observable = Rx.Observable;
    
    const startButton = document.querySelector('#start');
    const stopButton = document.querySelector('#stop');
    
    const start$ = Observable.fromEvent(startButton, 'click');
    const interval$ = Observable.interval(1000);
    const stop$ = Observable.fromEvent(stopButton, 'click');
    
    const intervalThatStops$ = interval$
        .takeUntil(stop$);
    
    start$
        .switchMapTo(intervalThatStops$)
        .scan( (acc) => {
            return Object.assign(acc, {count: acc.count + 1})
        }, {
           count: 0
        })
        .subscribe((x)=> console.log(x));
  • 相关阅读:
    使用mt_rand代替rand
    array_diff 不注意的坑
    stackoverflow 技术问答社区
    js检查浏览器是否处于隐身模式
    api数据接口
    图像识别api
    ionic creator(ionic生成器)
    商城金币设计
    details和summary标签
    iOS多线程编程之NSOperation的基本操作
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5258786.html
Copyright © 2011-2022 走看看