Skip to content

Instantly share code, notes, and snippets.

View ssougnez's full-sized avatar

Sébastien Sougnez ssougnez

View GitHub Profile
import { Observable } from 'rxjs';
import { retry } from 'rxjs/operators';
const observable = new Observable<number>(observer => {
let x = 0;
const interval = setInterval(() => {
if (x === 5) {
observer.error('Oops');
}
import { Observable } from 'rxjs';
import { retry } from 'rxjs/operators';
const observable = new Observable<number>(observer => {
let x = 0;
const interval = setInterval(() => {
if (x === 5 && Math.random() < .5) {
observer.error('Oops');
}
import { Observable, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
observable
.pipe(
catchError(err => {
console.warn('I want to display this error globally');
return throwError(err);
})
import { Observable, of } from 'rxjs';
import { catchError } from 'rxjs/operators';
observable
.pipe(
catchError(err => of(-1))
)
.subscribe({
next: x => console.log(`${x} received`),
complete: () => console.log('Completed'),
observable.subscribe({
next: x => console.log(`${x} received`),
complete: () => console.log('Completed'),
error: err => console.warn(err)
});
import { Observable } from 'rxjs';
const observable = new Observable<number>(observer => {
let x = 0;
const interval = setInterval(() => {
if (x === 5) {
observer.error('Oops');
}
else {
import { interval } from 'rxjs';
import { mergeMap, takeUntil } from 'rxjs/operators';
interval(1000)
.pipe(
takeUntil(this.destroy$),
mergeMap(() => this._http.put('http://localhost:3000/documents/1', { lastUpdate: new Date() }))
)
.subscribe(x => console.log('Document saved!'));
import { interval } from 'rxjs';
import { mergeMap, take, tap } from 'rxjs/operators';
interval(1000)
.pipe(
take(3),
mergeMap(() => interval(1000).pipe(tap(() => console.log('foo'))))
)
.subscribe(() => console.log('bar'));
import { interval } from 'rxjs';
import { mergeMap, tap } from 'rxjs/operators';
const s = interval(1000)
.pipe(
mergeMap(() => interval(1000).pipe(tap(() => console.log('foo'))))
)
.subscribe(() => console.log('bar'));
setTimeout(() => s.unsubscribe(), 3500);
const s = interval(1000)
.pipe(
map(() => interval(1000).pipe(tap(() => console.log('foo'))).subscribe())
)
.subscribe(() => console.log('bar'));
setTimeout(() => s.unsubscribe(), 3500);