Sobes.tech
Middle

Quais são as semelhanças e diferenças entre Observable e Promise?

sobes.tech IA

Resposta da IA

Observable representa um fluxo de dados capaz de emitir múltiplos valores ao longo do tempo. É reativo e suporta cancelamento de subscrição. Promise é sempre resolvida ou rejeitada apenas uma vez e é de uso único. Observable suporta operadores para transformar dados, Promise não.

Característica Observable Promise
Número de valores Pode emitir múltiplos valores Sempre um valor (resolve/reject)
Cancelamento Suporta cancelamento de subscrição Não suporta cancelamento
Reatividade Reativo Não
Operadores Suporta operadores (map, filter, etc.) Não
Preguiçoso Preguiçoso (executa na subscrição) Ansioso (executa imediatamente)

Exemplo 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 do Observable:', value),
  error: err => console.error('Erro do Observable:', err),
  complete: () => console.log('Observable completo'),
});

Exemplo de Promise:

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

myPromise
  .then(value => console.log('Valor da Promise:', value))
  .catch(error => console.error('Erro da Promise:', error));