码迷,mamicode.com
首页 > Web开发 > 详细

[RxJS] RefCount: automatically starting and stopping an execution

时间:2016-10-23 07:39:33      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:count()   cas   div   bsp   exec   class   timeout   style   ogr   

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"
*/

 

[RxJS] RefCount: automatically starting and stopping an execution

标签:count()   cas   div   bsp   exec   class   timeout   style   ogr   

原文地址:http://www.cnblogs.com/Answer1215/p/5988917.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!