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"
      
      */
  • 相关阅读:
    PHP大文件上传断点续传源码
    PHP大文件上传断点续传解决方案
    Flash大文件断点续传解决方案
    Flash大文件断点续传功能
    ASP.NET上传断点续传
    B/S文件上传下载解决方案
    web文件夹上传下载方案
    Codeforces 460E Roland and Rose(暴力)
    iOS_25_彩票骨架搭建+导航栏适配
    配置Redmine的邮件通知功能
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5535668.html
Copyright © 2011-2022 走看看