zoukankan      html  css  js  c++  java
  • [RxJS] RefCount: automatically starting and stopping an execution

    With the connect() method on a ConnectableObservable, the programmer is responsible for avoiding leaked executions of shared RxJS Observables. This lesson will teach you about refCount(), a handy operator that creates an automatically connected Observable, to avoid manually using connect().

    After multicast(new Rx.Subject()), we call refCount(), so it will help us to manage the connections, so we don't need to worry about the memory leak.

    var shared = Rx.Observable.interval(1000)
      .do(x => console.log('source ' + x))
      .multicast(new Rx.Subject())
      .refCount();
    
    var observerA = {
      next: function (x) { console.log('A next ' + x); },
      error: function (err) { console.log('A error ' + err); },
      complete: function () { console.log('A done'); },
    };
    
    var subA = shared.subscribe(observerA); // start
    
    var observerB = {
      next: function (x) { console.log('B next ' + x); },
      error: function (err) { console.log('B error ' + err); },
      complete: function () { console.log('B done'); },
    };
    
    var subB;
    setTimeout(function () {
      subB = shared.subscribe(observerB); // 1 => 2
    }, 2000);
    
    setTimeout(function () {
      subA.unsubscribe(); // 2 => 1
      console.log('unsubscribed A');
    }, 5000);
    
    setTimeout(function () {
      subB.unsubscribe(); // 1 => 0 (stop)
      console.log('unsubscribed B');
    }, 7000);
    
    
    /*
    "source 0"
    "A next 0"
    "source 1"
    "A next 1"
    "source 2"
    "A next 2"
    "B next 2"
    "source 3"
    "A next 3"
    "B next 3"
    "source 4"
    "A next 4"
    "B next 4"
    "unsubscribed A"
    "source 5"
    "B next 5"
    "source 6"
    "B next 6"
    "unsubscribed B"
    */
  • 相关阅读:
    php环境配置中各个模块在网站建设中的功能
    PHP+Apache+MySQL+phpMyAdmin在win7系统下的环境配置
    August 17th 2017 Week 33rd Thursday
    August 16th 2017 Week 33rd Wednesday
    August 15th 2017 Week 33rd Tuesday
    August 14th 2017 Week 33rd Monday
    August 13th 2017 Week 33rd Sunday
    August 12th 2017 Week 32nd Saturday
    August 11th 2017 Week 32nd Friday
    August 10th 2017 Week 32nd Thursday
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5988917.html
Copyright © 2011-2022 走看看