Назад к вопросам
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));