Назад к вопросам
Middle
82
questionbank
В чем сходство и отличия между Observable и Promise?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Сходства:
- Представляют асинхронные операции.
- Используют функции для обработки результата (resolved) и ошибки (rejected).
Отличия:
| Особенность | Promise | Observable |
|---|---|---|
| Значение/события | Возвращает одно значение или ошибку. | Возвращает 0 или более значений со временем. |
| Отмена | Нельзя отменить после запуска. | Можно отменить подписку. |
| Множество подписчиков | Единоразовое выполнение независимо от подписчиков. | Новая отписка обычно приводит к новому выполнению (холодный Observable). |
| Ленивость | Сразу начинает выполняться после создания. | Начинает выполняться только после подписки. |
| Операторы | Нет встроенных операторов для трансформации. | Имеет богатый набор операторов (map, filter, merge и др.). |
| Примеры использования | HTTP-запросы, отложенные действия. | События UI, WebSocket-соединения, интервалы. |
Пример Observable:
import { Observable } from 'rxjs';
const observable = new Observable(subscriber => {
subscriber.next(1);
subscriber.next(2);
setTimeout(() => {
subscriber.next(3);
subscriber.complete();
}, 1000);
});
Пример Promise:
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Данные получены');
}, 1000);
});