Skip to content

Instantly share code, notes, and snippets.

@musukvl
Created June 4, 2017 20:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save musukvl/9b90691506761ed1a95c2ff3cf1b7be5 to your computer and use it in GitHub Desktop.
Save musukvl/9b90691506761ed1a95c2ff3cf1b7be5 to your computer and use it in GitHub Desktop.
RX.JS Observer concept demo
import {Observable} from "rxjs";
import {Subject} from "rxjs";
// import {Observable} from "rxjs/Observable";
// import "rxjs/add/operator/map";
// import "rxjs/add/operator/filter";
let numbers = [1, 5, 10, 15];
let arrSource = Observable.from(numbers);
let contextCounter = 1;
let source = Observable.create(observer => {
let index = 0;
let contextId = contextCounter++;
let produceValue = () => {
console.log(`context [${contextId}] produce: ${numbers[index]}`);
observer.next(numbers[index++]);
if(index < numbers.length) {
setTimeout(produceValue, 1000);
}
else {
observer.complete();
}
}
produceValue();
});
let observer1 = {next: (x) => console.log(`observer1 got ${x}`)};
let observer2 = {next: (x) => console.log(`observer2 got ${x}`)};
let subj = new Subject();
console.log("subscribe sample");
source.subscribe(observer1);
source.subscribe(observer2);
/*
console.log("subj sample");
subj.subscribe(observer1);
subj.subscribe(observer2);
source.subscribe(subj);
*/
/*
console.log("multicasted sample");
let multicastedSource = source.multicast(subj);
multicastedSource.subscribe(observer1);
multicastedSource.connect();
multicastedSource.subscribe(observer2);
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment