Sobes.tech
Middle

¿Cuáles son las similitudes y diferencias entre Observable y Promise?

sobes.tech AI

Respuesta de la IA

Observable representa un flujo de datos capaz de emitir múltiples valores a lo largo del tiempo. Es reactivo y soporta cancelación de suscripción. Promise siempre se resuelve o rechaza solo una vez y es de un solo uso. Observable soporta operadores para transformar datos, Promise no.

Característica Observable Promise
Cantidad de valores Puede emitir múltiples valores Siempre un valor (resolve/reject)
Cancelación Soporta cancelación de suscripción No soporta cancelación
Reactividad Reactivo No
Operadores Soporta operadores (map, filter, etc.) No
Lazy Pereza (se ejecuta al suscribirse) Ansioso (se ejecuta inmediatamente)

Ejemplo de Observable:

import { Observable } from 'rxjs';

const myObservable = new Observable(subscriber => {
  subscriber.next(1);
  subscriber.next(2);
  setTimeout(() => {
    subscriber.next(3);
    subscriber.complete();
  }, 1000);
});

myObservable.subscribe({
  next: value => console.log('Valor del Observable:', value),
  error: err => console.error('Error del Observable:', err),
  complete: () => console.log('Observable completo'),
});

Ejemplo de Promise:

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise resuelta');
    // reject('Promise rechazada');
  }, 1000);
});

myPromise
  .then(value => console.log('Valor de la Promise:', value))
  .catch(error => console.error('Error de la Promise:', error));