Skip to content

Commit e299b7c

Browse files
committed
Fin sección 6
1 parent a30e58c commit e299b7c

File tree

7 files changed

+151
-0
lines changed

7 files changed

+151
-0
lines changed

src/operadores/07-take.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { of } from 'rxjs';
2+
import { take, tap } from 'rxjs/operators';
3+
4+
const numeros$ = of(1,2,3,4,5).pipe(
5+
// tap(console.log)
6+
);
7+
8+
numeros$.pipe(
9+
tap(console.log),
10+
take(3)
11+
).subscribe({
12+
next: val => console.log('next:', val),
13+
complete: () => console.log('complete')
14+
})

src/operadores/08-first.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { fromEvent } from 'rxjs';
2+
import { tap, first, map, pluck } from 'rxjs/operators';
3+
4+
const click$ = fromEvent<PointerEvent>(document,'click');
5+
6+
click$.pipe(
7+
tap<PointerEvent>(console.log),
8+
// map(event => ({
9+
// clientX: event.clientX,
10+
// clientY: event.clientY
11+
// }))
12+
// Resumido =>
13+
map(({ clientX, clientY }) => ({ clientX, clientY })),
14+
first(event => event.clientY >= 150),
15+
//
16+
// With Pluck
17+
//
18+
// pluck('clientY'),
19+
// first(event => event >= 150)
20+
).subscribe({
21+
next: val => console.log('next:', val),
22+
complete: () => console.log('complete')
23+
});

src/operadores/09-takeWhile.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { fromEvent } from 'rxjs';
2+
import { map, takeWhile } from 'rxjs/operators';
3+
4+
const click$ = fromEvent<PointerEvent>(document,'click');
5+
6+
7+
8+
click$.pipe(
9+
map(({x,y}) => ({x,y})),
10+
takeWhile(({ y }) => y <= 150, true)
11+
)
12+
.subscribe({
13+
next: (val) => console.log('next',val),
14+
complete: () => console.log('complete')
15+
});
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { interval, fromEvent } from 'rxjs';
2+
import { takeUntil, tap, skip } from 'rxjs/operators';
3+
4+
const boton = document.createElement('button');
5+
boton.innerHTML = 'Detener Timer';
6+
document.body.append(boton);
7+
8+
const counter$ = interval(1000);
9+
// const clickBtn$ = fromEvent(boton,'click');
10+
const clickBtn$ = fromEvent(boton,'click').pipe(
11+
tap(() => console.log('tap antes del skip')),
12+
skip(1),
13+
tap(() => console.log('tap después del skip')),
14+
);
15+
16+
const sub = counter$.pipe(
17+
// takeUntil(fromEvent(boton,'click'))
18+
takeUntil(clickBtn$)
19+
)
20+
.subscribe({
21+
next: val => console.log('next:',val),
22+
complete: () => console.log('completed')
23+
});
24+
25+

src/operadores/11-distinct.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { of, from } from 'rxjs';
2+
import { distinct } from 'rxjs/operators';
3+
4+
const numeros$ = of(1,'1',1,3,3,2,2,4,4,5,3,1);
5+
6+
numeros$.pipe(
7+
distinct() // El distinct usa ===, se podria usar 1 como numero y 1 como string, por que no son iguales
8+
)
9+
.subscribe(console.log)
10+
11+
interface Personaje {
12+
nombre: string;
13+
}
14+
15+
const personajes: Personaje[] = [
16+
{ nombre: 'Megaman' },
17+
{ nombre: 'X' },
18+
{ nombre: 'Zero' },
19+
{ nombre: 'Dr. Willy' },
20+
{ nombre: 'X' },
21+
{ nombre: 'Megaman' },
22+
{ nombre: 'Zero' },
23+
]
24+
25+
from(personajes).pipe(
26+
distinct(p => p.nombre)
27+
).subscribe(console.log);
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { of, from } from 'rxjs';
2+
import { distinctUntilChanged } from 'rxjs/operators';
3+
4+
const numeros$ = of(1,'1',1,3,3,2,2,4,4,5,3,1,'1');
5+
6+
numeros$.pipe(
7+
distinctUntilChanged() // El distinct usa ===, se podria usar 1 como numero y 1 como string, por que no son iguales
8+
)
9+
.subscribe(console.log)
10+
11+
interface Personaje {
12+
nombre: string;
13+
}
14+
15+
const personajes: Personaje[] = [
16+
{ nombre: 'Megaman' },
17+
{ nombre: 'Megaman' },
18+
{ nombre: 'Zero' },
19+
{ nombre: 'Dr. Willy' },
20+
{ nombre: 'X' },
21+
{ nombre: 'X' },
22+
{ nombre: 'Zero' },
23+
]
24+
25+
from(personajes).pipe(
26+
distinctUntilChanged( (ant, act) => ant.nombre === act.nombre )
27+
).subscribe(console.log);
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { from } from 'rxjs';
2+
import { distinctUntilKeyChanged } from 'rxjs/operators';
3+
4+
interface Personaje {
5+
nombre: string;
6+
}
7+
8+
const personajes: Personaje[] = [
9+
{ nombre: 'Megaman' },
10+
{ nombre: 'Megaman' },
11+
{ nombre: 'Zero' },
12+
{ nombre: 'Dr. Willy' },
13+
{ nombre: 'X' },
14+
{ nombre: 'X' },
15+
{ nombre: 'Zero' },
16+
]
17+
18+
from(personajes).pipe(
19+
distinctUntilKeyChanged('nombre')
20+
).subscribe(console.log);

0 commit comments

Comments
 (0)