Middle
Ποια είναι οι ομοιότητες και διαφορές μεταξύ Observable και Promise;
sobes.tech AI
Απάντηση από AI
Ομοιότητες:
- Αντιπροσωπεύουν ασύγχρονες λειτουργίες.
- Χρησιμοποιούν συναρτήσεις για την επεξεργασία του αποτελέσματος (επιλυμένο) και του σφάλματος (απορριφθέν).
Διαφορές:
| Χαρακτηριστικό | 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);
});