Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1 source, Three subscribers
- Subscriber 1 subscribes and source starts emitting
- Subscriber 2 subscribes halfway
- Subscriber 3 subscribes after source has completed.
- ```
- import Rx from 'rxjs/Rx';
- var data = [];
- var subject = new Rx.ReplaySubject(1);
- // var subject = new Rx.BehaviorSubject(data);
- // var subject = new Rx.Subject();
- setTimeout(function () {
- // Clean up
- subject.complete();
- clearInterval(myInterval);
- }, 10000);
- var subSubject1 = subject.subscribe(
- function (x) { console.log('Value published to observer 1: ' + x); },
- function (e) { console.log('onError: ' + e.message); },
- function () { console.log('onCompleted 1'); });
- setTimeout(function () {
- var subSubject2 = subject.subscribe(
- function (x) { console.log('Value published to observer 2: ' + x); },
- function (e) { console.log('onError: ' + e.message); },
- function () { console.log('onCompleted 2'); }
- );
- }, 5000);
- setTimeout(function () {
- var subSubject3 = subject.subscribe(
- function (x) { console.log('Value published to observer 3: ' + x); },
- function (e) { console.log('onError: ' + e.message); },
- function () { console.log('onCompleted 3'); }
- );
- }, 12000);
- var myInterval = setInterval(function () {
- data.push(data.length);
- subject.next(data);
- }, 1000);
- ```
- ## With var subject = new Rx.ReplaySubject(1);
- **Value published to observer 1: 0**
- index.js:31 Value published to observer 1: 0,1
- index.js:31 Value published to observer 1: 0,1,2
- index.js:31 Value published to observer 1: 0,1,2,3
- index.js:61 Value published to observer 2: 0,1,2,3
- **index.js:31 Value published to observer 1: 0,1,2,3,4**
- **index.js:61 Value published to observer 2: 0,1,2,3,4**
- index.js:31 Value published to observer 1: 0,1,2,3,4,5
- index.js:61 Value published to observer 2: 0,1,2,3,4,5
- index.js:31 Value published to observer 1: 0,1,2,3,4,5,6
- index.js:61 Value published to observer 2: 0,1,2,3,4,5,6
- index.js:31 Value published to observer 1: 0,1,2,3,4,5,6,7
- index.js:61 Value published to observer 2: 0,1,2,3,4,5,6,7
- index.js:31 Value published to observer 1: 0,1,2,3,4,5,6,7,8
- index.js:61 Value published to observer 2: 0,1,2,3,4,5,6,7,8
- index.js:35 onCompleted 1
- index.js:65 onCompleted 2
- *index.js:71 Value published to observer #3: 0,1,2,3,4,5,6,7,8*
- index.js:75 onCompleted 3
- ## With var subject = new Rx.BehaviorSubject(data);
- **Value published to observer 1:**
- index.js:31 Value published to observer 1: 0
- index.js:31 Value published to observer 1: 0,1
- index.js:31 Value published to observer 1: 0,1,2
- **index.js:31 Value published to observer 1: 0,1,2,3**
- **index.js:61 Value published to observer 2: 0,1,2,3**
- index.js:31 Value published to observer 1: 0,1,2,3,4
- index.js:61 Value published to observer 2: 0,1,2,3,4
- index.js:31 Value published to observer 1: 0,1,2,3,4,5
- index.js:61 Value published to observer 2: 0,1,2,3,4,5
- index.js:31 Value published to observer 1: 0,1,2,3,4,5,6
- index.js:61 Value published to observer 2: 0,1,2,3,4,5,6
- index.js:31 Value published to observer 1: 0,1,2,3,4,5,6,7
- index.js:61 Value published to observer 2: 0,1,2,3,4,5,6,7
- index.js:31 Value published to observer 1: 0,1,2,3,4,5,6,7,8
- index.js:61 Value published to observer 2: 0,1,2,3,4,5,6,7,8
- index.js:35 onCompleted 1
- index.js:65 onCompleted 2
- *index.js:75 onCompleted 3*
- ## With var subject = new Rx.Subject();
- **Value published to observer 1: 0**
- index.js:31 Value published to observer 1: 0,1
- index.js:31 Value published to observer 1: 0,1,2
- index.js:31 Value published to observer 1: 0,1,2,3
- **index.js:31 Value published to observer 1: 0,1,2,3,4**
- **index.js:61 Value published to observer 2: 0,1,2,3,4**
- index.js:31 Value published to observer 1: 0,1,2,3,4,5
- index.js:61 Value published to observer 2: 0,1,2,3,4,5
- index.js:31 Value published to observer 1: 0,1,2,3,4,5,6
- index.js:61 Value published to observer 2: 0,1,2,3,4,5,6
- index.js:31 Value published to observer 1: 0,1,2,3,4,5,6,7
- index.js:61 Value published to observer 2: 0,1,2,3,4,5,6,7
- index.js:31 Value published to observer 1: 0,1,2,3,4,5,6,7,8
- index.js:61 Value published to observer 2: 0,1,2,3,4,5,6,7,8
- index.js:35 onCompleted 1
- index.js:65 onCompleted 2
- **index.js:75 onCompleted 3**
- ## ====
- BehaviorSubject emits initial value (before next() happens)
- Subject, ReplaySubject emits on next(), not initial value
- ReplaySubject returns value even after complete()
- Subject, BehaviorSubject do not
- ReplaySubject, BehaviorSubject give the current value on subscription
- Subject emits on next()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement