rxjs hot vs cold observable

by wuct

HTML

<script src="https://unpkg.com/rxjs/bundles/Rx.min.js"></script>

Babel + JSX

const subject = new Rx.Subject()

console.log('start')

const result = outterSubject.switchMap((outter) => {
  console.log('outterSubject: ', outter)
  
  const innerSubject = new Rx.Subject()
  
  return innerSubject
  	.startWith(1)
  	.map(inner => ({
      value: inner,
      update: v => innerSubject.next(v),
    }))
}).share()

result.subscribe(({ value, update }) => {
  console.log('result 1: ', value)
})

let n = 0
result.subscribe(({ value, update }) => {
  console.log('result 2: ', value)
  
  if (n > 3) return
  
  setTimeout(() => {
    n = n + 1
    update(n)
  }, 1000)
})

outterSubject.next(2)