JSFiddle - React, Tailwind, and code Playground

by Vlad Rasenko

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.2/rxjs.umd.min.js"></script>

JavaScript

const { Subject, from, interval } =  rxjs
const { mergeMap, map, catchError, switchMap } = rxjs.operators

const $main = new Subject()

$main.pipe(
	switchMap($stream => $stream),
  catchError((err, $stream) => {
    console.warn(err)
    return $stream
  })
)
	.subscribe(data => console.log('data', data))
  
  
$failedOn3dt = interval(300).pipe(
	map(i => {
  	if (i === 3) throw new Error('#3')
  	return i
  })
)



$main.next(interval(300))
setTimeout(() => $main.next(from(new Promise((resolve) => {
	setTimeout(resolve, 100, 'async')
})).pipe(
	switchMap(data => from(Promise.resolve(data)).pipe(
		map(() => { throw new Error('async error')})
	))
)), 1500)
setTimeout(() => $main.next($failedOn3dt), 2000)