Observables
- Cómo estandar a los nombres de los observables se les añade un
$ al final, para poder identificarlos mejor: const obs$
- Creación de un observable de forma manual:
const obs$ = new Observable( subscriber => {
subscriber.next(1);
subscriber.next(2);
subscriber.next(3);
subscriber.complete();
});
- Observer: Pueden ser enviados directamente a un subscriptor, pueden contar con un next, un error y un complete
const observer: Observer<any> = {
next: value => console.log('[next]:', value),
error: error => console.warn('[error]:', error),
complete: () => console.info('[completed]')
}
- Subscriber: Los subscriptores que cuenten con más de un argumento, es decir next, error y/complete deben de ser enviados como un observer:
next: .. - error: ...
- Unsubscribe: Para poder ejecutar un desuscripción, deberiamos asignar la suscripción a una variable, y despues hacer referencia a esta usando
.unsubscribe()
- Para ejecutar una linea de código en el momento de la desuscripción, en el observer debe de estar incluido un return:
return {
clearInterval(intervalo);
console.log('Intervalo Destruido');
}
- Add: Observables en cadena - Usando por ejemplo:
subs1.add(subs2); subs1.add(subs3) al momento de efectuar la desuscripción al subs1, nos desuscribiriamos también del subs2 y del subs3.
- Subject: Un subject nos permite un casteo múltiple, es decir, la información de un observable va a ser retransmitida de forma exactamente igual para cualquier subscriptor, ejemplo un observable que nos podruce valores random para cada subscriptor, con subject nos devolveria la misma información a todos los suscriptores.
- Un subject también es un Observer, cuenta con su
next, error y complete. Creación de un subject:
const subject$ = new Subject();
const subscription = intervalo$.subscribe(subject$); // El subject se suscribe al observable
// Nos suscribimos al subject
const subs1 = subject$.subscribe(rnd => console.log('Subs 1:', rnd));
const subs2 = subject$.subscribe(rnd => console.log('Subs 2:', rnd));
- Cold Observable: Cuando la data es producida por el observable en sí mismo.
- Hot Observable: Cuando la data es producida FUERA del observable.