Observables vs Promises

Oba Obietnice i Observables dostarczają nam abstrakcji, które pomagają nam radzić sobie z asynchroniczną naturą naszych aplikacji. Istnieją jednak istotne różnice między tymi dwoma:

  • Jak widać w powyższym przykładzie, Observables może definiować zarówno aspekty asynchroniczne, jak i ich odłączanie.

  • Observables można anulować.

  • Ponadto, Observables może być ponowione za pomocą jednego z operatorów ponawiania dostarczonych przez API, takich jak retry iretryWhen. Z drugiej strony obietnice wymagają od wywołującego dostępu do pierwotnej funkcji, która zwróciła obietnicę, aby mieć możliwość ponowienia próby.

RxJS zawiera metodę Observable.fromPromise() tworzącą obiekt Observable na podstawie obietnicy oraz Observable.toPromise() - działającą w odwrotnym kierunku. Korzystanie z obietnic nie jest jednak zalecane.