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));