Az RxJS, amely az Angular reaktív programozási könyvtára, az Observable típust használja az aszinkron és eseményalapú programok kezelésére. Egy Observable háromfajta üzenetet küldhet a feliratkozóinak: next, error, és complete. Az error és complete üzenetek speciális jelentéssel bírnak:
error
- Az
errorüzenet akkor jön létre, amikor az Observable során valamilyen hiba történik. - Az
errormetódus egy hibaobjektumot vesz paraméterként, ami információkat tartalmaz a hibáról. - Amikor egy Observable hibaüzenetet küld, az azt jelenti, hogy valami váratlan vagy nemkívánatos esemény történt, ami megakadályozza az adatok további kiadását.
- Az
errorhívása után az Observable megszűnik adatokat küldeni, és “leáll”. - A feliratkozók
errorcallback függvénye fogja kezelni ezt a hibaüzenetet.
Példa:
const myObservable = new Observable(observer => {
observer.next('Adat 1');
observer.next('Adat 2');
observer.error(new Error('Hiba történt'));
observer.next('Ez az adat már nem lesz elküldve');
});
myObservable.subscribe({
next: data => console.log(data),
error: err => console.error(err.message)
});
Ebben a példában az error hívás után az ‘Ez az adat már nem lesz elküldve’ üzenet nem jut el a feliratkozóhoz.
complete
- A
completemetódus akkor hívódik meg, amikor az Observable befejezte az adatküldést és nincs több adat, amit küldhetne. - A
completehívása azt jelzi, hogy az Observable sikeresen befejezte a műveletét. - A
completemetódus nem vesz paramétert. - A
completehívása után az Observable nem küld több adatot. - A feliratkozók
completecallback függvénye fogja kezelni ezt az eseményt.
Példa:
const myObservable = new Observable(observer => {
observer.next('Adat 1');
observer.next('Adat 2');
observer.complete();
observer.next('Ez az adat már nem lesz elküldve');
});
myObservable.subscribe({
next: data => console.log(data),
complete: () => console.log('Befejeződött')
});
Ebben a példában a complete hívása után a ‘Ez az adat már nem lesz elküldve’ üzenet nem jut el a feliratkozóhoz, és a ‘Befejeződött’ üzenet jelzi, hogy az Observable befejezte a működését.