Назад к вопросам
Middle
235
questionbank
В чем сходства и отличия между Observable и Promise?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Observable представляет собой поток данных, способный излучать множество значений с течением времени. Он реактивен и поддерживает отмену подписки. Promise всегда разрешается либо отклоняется только один раз и является одноразовым. Observable поддерживает операторы для преобразования данных, Promise — нет.
| Характеристика | Observable | Promise |
|---|---|---|
| Количество значений | Может излучать множество значений | Всегда одно значение (resolve/reject) |
| Отмена | Поддерживает отмену подписки | Не поддерживает отмену |
| Реактивность | Реактивный | Нет |
| Операторы | Поддерживает операторы (map, filter, etc.) | Нет |
| Ленивость | Ленивый (выполняется при подписке) | Жадный (выполняется сразу) |
Пример 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('Observable value:', value),
error: err => console.error('Observable error:', err),
complete: () => console.log('Observable complete'),
});
Пример Promise:
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise resolved');
// reject('Promise rejected');
}, 1000);
});
myPromise
.then(value => console.log('Promise value:', value))
.catch(error => console.error('Promise error:', error));