Sobes.tech
Middle

¿Qué es observable?

sobes.tech AI

Respuesta de la IA

Observable — es una entidad que representa un flujo de datos o eventos, que puede ser asíncrono. Las fuentes observables pueden emitir valores durante un período de tiempo determinado, y los suscriptores (Subscribers u Observers) pueden reaccionar a estos valores a medida que aparecen.

Conceptos clave:

  • Observable (Fuente observable): Fuente de datos o eventos.
  • Observer (Observador): Objeto con métodos para reaccionar a eventos de Observable (next, error, complete).
    • next: Recibir el siguiente valor.
    • error: Ocurre un error.
    • complete: Finaliza el flujo de datos.
  • Subscription (Suscripción): Conexión entre Observable y Observer. La suscripción se crea al llamar al método subscribe en un Observable. Permite que el Observer reciba valores y gestione el ciclo de vida de la suscripción (por ejemplo, cancelar para evitar fugas de memoria).
  • Operators (Operadores): Funciones para transformar, combinar y gestionar flujos de Observable. Ejemplos: map, filter, mergeMap, debounceTime.

A diferencia de las Promises, los Observable pueden emitir múltiples valores a lo largo del tiempo, representando flujos de datos en lugar de un evento asíncrono único.

Ejemplo de uso en RxJS (una biblioteca popular para programación reactiva):

import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

// Crear un Observable a partir de un array
const source = new Observable(observer => {
  observer.next(1);
  observer.next(2);
  observer.next(3);
  observer.complete(); // Finaliza el flujo
});

// Suscripción y uso del operador
const subscription = source.pipe(
  map(value => value * 2) // El operador map duplica cada valor
).subscribe({
  next: value => console.log(value), // Recibe los valores: 2, 4, 6
  error: err => console.error(err), // Manejo de errores
  complete: () => console.log('Complete!') // Finaliza
});

Ventajas principales:

  • Programación reactiva: gestión conveniente de flujos de datos asíncronos.
  • Componibilidad: posibilidad de combinar y transformar fácilmente los flujos con operadores.
  • Gestión del ciclo de vida: la suscripción permite gestionar explícitamente la recepción de datos y prevenir fugas de memoria.