Sobes.tech
Middle

Ποια είναι οι ομοιότητες και διαφορές μεταξύ Observable και Promise;

sobes.tech AI

Απάντηση από AI

Observable αντιπροσωπεύει ένα ρεύμα δεδομένων που μπορεί να εκπέμπει πολλαπλές τιμές με την πάροδο του χρόνου. Είναι αντιδραστικό και υποστηρίζει την ακύρωση της εγγραφής. Το Promise πάντα επιλύεται ή απορρίπτεται μόνο μία φορά και είναι μονοχρηστικό. Το Observable υποστηρίζει τελεστές για τη μετατροπή δεδομένων, το Promise όχι.

Χαρακτηριστικό Observable Promise
Πλήθος τιμών Μπορεί να εκπέμπει πολλαπλές τιμές Πάντα μία τιμή (resolve/reject)
Ακύρωση Υποστηρίζει ακύρωση εγγραφής Δεν υποστηρίζει ακύρωση
Αντιδραστικότητα Αντιδραστικό Όχι
Τελεστές Υποστηρίζει τελεστές (map, filter, κ.λπ.) Όχι
Τεμπελιά Τεμπέλης (εκτελείται κατά την εγγραφή) Ανυπόμονος (εκτελείται αμέσως)

Παράδειγμα 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),
  error: err => console.error('Σφάλμα Observable:', err),
  complete: () => console.log('Ο Observable ολοκληρώθηκε'),
});

Παράδειγμα Promise:

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise επιλύθηκε');
    // reject('Promise απορρίφθηκε');
  }, 1000);
});

myPromise
  .then(value => console.log('Τιμή Promise:', value))
  .catch(error => console.error('Σφάλμα Promise:', error));