cold observable : uni cast
hot observable : multi cast
let count = Math.random();
let observable$ = new Observable(observer=>{
observer.next(count);
});
observable$.subscribe(val=>{
console.log('observer1 '+ val);
})
observable$.subscribe(val=>{
console.log('observer2 '+ val);
})
// 단순히 같은 값을 멀티캐스트
let dataStream$ = interval(1000);
dataStream$.subscribe(val=>{
console.log('interval data 1 '+ val);
});
setTimeout(() => {
dataStream$.subscribe(val=>{
console.log('interval data 2 '+val);
});
}, 2000);
setTimeout으로 2초후 구독이 시작되면 스트림으로부터 0,1,2,3 순으로 데이터가 방출된다.
let dataStream$ = interval(1000);
let subject$ = new Subject();
dataStream$.subscribe(subject$);
subject$.subscribe(val=>{
console.log('interval data 1 '+ val);
});
setTimeout(() => {
subject$.subscribe(val=>{
console.log('interval data 2 '+val);
});
}, 2000);
subject를 생성하고
dataStream);
subject가 옵저버블의 옵저버역활을 하고한다.
subject$.subscribe메소드로
subject가 옵저버블역활을 하고하여 제대로된 multicast가 된다.