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));