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)