zoukankan      html  css  js  c++  java
  • [RxJS] Displaying Initial Data with StartWith

    You often need to render out data before you stream begins from a click or another user interaction. This lessons shows how to use startWith to set the initial output before you trigger your stream.

    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$);
    
    const data = {count: 0};
    
    start$
        .switchMapTo(intervalThatStops$)
        .startWith(data)
        .scan( (acc) => {
            return Object.assign(acc, {count: acc.count + 1})
        })
        .subscribe((x)=> console.log(x));

    What startWith will do is, before you click the start button, it will set the initial value for scan(), and logout 0 on the screen. 

    Then when you click the start button, it will increase from 1 to .....

    So it means startWith actually will fire subscrie once.

    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$);
    
    const inc = (acc) => ({count: acc.count + 1}); // one line arrow function only ruturn object need ()
    
    const data = {count: 0};
    
    start$
        .switchMapTo(intervalThatStops$)
        .startWith(data)
        .scan( inc )
        .subscribe((x)=> console.log(x));
  • 相关阅读:
    【洛谷P3368】 【模板】树状数组 2
    树状数组
    【codevs1519】 过路费
    【洛谷P3398】 仓鼠找sugar
    【洛谷P2912】 [USACO08OCT]牧场散步Pasture Walking
    字符串哈希函数
    【洛谷P3498】 [POI2010]KOR-Beads
    NOIp2011 选择客栈
    【洛谷P1381】单词背诵
    P3396 哈希冲突
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5258848.html
Copyright © 2011-2022 走看看