zoukankan      html  css  js  c++  java
  • [RxJS] Transformation operator: buffer, bufferCount, bufferTime

    This lesson will teach you about another horizontal combination operator: buffer and its variants. Buffer groups consecutive values together, emitting the output as an array. The buffer variants and their arguments allow to specify when to close the buffers.

    buffer(close observable): According to another observalbe to group items.

    var foo = Rx.Observable.of('h', 'e', 'l', 'l', 'o')
      .zip(Rx.Observable.interval(600).take(5), (x,y) => x);
    var bar = Rx.Observable.interval(900).take(3);
    
    /*
    -----h-----e-----l-----l-----o|       (foo)
    --------0--------1--------2|          (bar)
    
            buffer(bar)
    
    --------h--------e--------ll|
    */
    
    var result = foo.buffer(bar);
    
    result.subscribe(
      function (x) { console.log('next ' + x); },
      function (err) { console.log('error ' + err); },
      function () { console.log('done'); },
    );
      
      /*
    
    "next h"
    "next e"
    "next l,l"
    "done"
      
      */

    bufferTime(number): 

    var foo = Rx.Observable.of('h', 'e', 'l', 'l', 'o')
      .zip(Rx.Observable.interval(600).take(5), (x,y) => x);
    
    /*
    -----h-----e-----l-----l-----o|       (foo)
    --------x--------x--------x|          (900ms)
    
            bufferTime(900)
    
    --------h--------e--------ll|
    */
    
    var result = foo.bufferTime(900);
    
    result.subscribe(
      function (x) { console.log('next ' + x); },
      function (err) { console.log('error ' + err); },
      function () { console.log('done'); },
    );
      
      /*
    
    "next h"
    "next e"
    "next l,l"
    "done"
      
      */

    bufferCount(number):

    var foo = Rx.Observable.of('h', 'e', 'l', 'l', 'o')
      .zip(Rx.Observable.interval(600).take(5), (x,y) => x);
    
    /*
    -----h-----e-----l-----l-----o|       (foo)
    
            bufferCount(2)
    
    ----------([h,e])------([l,l])([o|])l
    */
    
    var result = foo.bufferCount(2);
    
    result.subscribe(
      function (x) { console.log('next ' + x); },
      function (err) { console.log('error ' + err); },
      function () { console.log('done'); },
    );
      
      /*
    
    "next h,e"
    "next l,l"
    "next o"
    "done"
      
      */
  • 相关阅读:
    Webpack 2 视频教程 004
    Webpack 2 视频教程 003
    python dic字典排序
    python练习题7.1词频统计
    python文件读写的基础使用(计算总评成绩)
    python常用内置函数使用
    python练习题5.7列表去重(修正)
    python练习题5.2图的字典表示
    python练习题4.15换硬币(修正)
    python练习题4.7统计学生平均成绩与及格人数
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5535668.html
Copyright © 2011-2022 走看看