zoukankan      html  css  js  c++  java
  • [RxJS] Stopping a shared observable execution

    ConnectableObservable has the connect() method to conveniently dictate the start of the shared execution of the source Observable. However, we need a mechanism to dictate the stop of the shared execution, otherwise a leak happens. This lesson will teach you how to do that, and it's all about Subscriptions.

    var connectableObservable = Rx.Observable.interval(1000)
      .do(x => console.log('source ' + x))
      .multicast(new Rx.Subject());
    
    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 sub = connectableObservable.connect(); // start
    
    var subA = connectableObservable.subscribe(observerA);
    
    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 = connectableObservable.subscribe(observerB);
    }, 2000);
    
    setTimeout(function () {
      sub.unsubscribe(); // stop
      console.log('unsubscribed shared execution');
    }, 5000);

    Just remember that with connect we are manually controlling the start of the shared execution, and then we keep a subscription in order to manually control the stop of the shared execution. All of this is in order to avoid leaks.

  • 相关阅读:
    Chrome浏览器二维码生成插件
    《零成本实现Web性能测试:基于Apache JMeter》读书笔记
    《软件性能测试过程详解与案例剖析》读书笔记
    Python-Web-数据库-mongodb
    JAVA并发-基于AQS实现自己的显示锁
    FutureTask原理解析
    Linux上安装jdk,mysql
    Linux常用命令
    函数
    1.初识代码审计-基础
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5986631.html
Copyright © 2011-2022 走看看