- A
Subjectegy egyszerű RxJS osztály, amely csak az aktuális értéket tárolja meg és értesíti az összes jelenlegi és jövőbeli előfizetőt az új értékek érkezésekor. - A
Subjectnem tárolja az előző értékeket, csak az aktuálisat. - Ha egy új előfizető csatlakozik egy
Subject-hez, az nem kapja meg az aktuális értéket, csak az új értékeket az előfizetés kezdete után. - Használata tipikusan egyszerű események kezelésére vagy adatfolyamok létrehozására alkalmas, amikor nincs szükség az előző értékekre.
import { Subject } from 'rxjs';
const subject = new Subject();
subject.next(1);
subject.subscribe(value => console.log(`Subscriber 1 received: ${value}`));
subject.next(2);
subject.next(3);
BehaviorSubject:- A
BehaviorSubjectis egy RxJS osztály, de kiegészíti aSubject-et azáltal, hogy tárolja az aktuális értéken kívül az előző értékeket is. - Amikor egy új előfizető csatlakozik egy
BehaviorSubject-hez, az az aktuális értéket azonnal megkapja. - A
BehaviorSubjecthasznos, ha az aktuális és az előző értékek fontosak, például ha egy alkalmazásban szükséges az aktuális állapot nyomon követése.
- A
import { BehaviorSubject } from 'rxjs';
const behaviorSubject = new BehaviorSubject(0); // Kezdőérték: 0
behaviorSubject.subscribe(value => console.log(`Subscriber 1 received: ${value}`));
behaviorSubject.next(1);
behaviorSubject.next(2);
behaviorSubject.subscribe(value => console.log(`Subscriber 2 received: ${value}`)); // Subscriber 2 azonnal megkapja az aktuális értéket (2)
Összefoglalva, a Subject csak az aktuális értéket tárolja és nem nyújt előző értékeket az új előfizetők számára, míg a BehaviorSubject tárolja az aktuális és az előző értékeket, és az aktuálisat azonnal elküldi az új előfizetőknek. A választás attól függ, hogy az alkalmazásban szükség van-e az előző értékekre, és hogy az új előfizetőknek azonnali hozzáférésre van-e szükségük az aktuális értékhez.
A Subject egy olyan speciális Observable, amely egyszerre képes mind adatokat kibocsátani, mind pedig azokat figyelni és feldolgozni.
Nem maguktól generálják ki az értékeket, hanem next function meghívásával manuálisan működésbe léptethetők.
A Subject hasonló tulajdonságokkal rendelkezik, mint az Observable, de egyúttal az Observer szerepét is betölti. Ez azt jelenti, hogy a Subject feliratkozhat más Observable-okra és azokból érkező értékeket kezelheti, valamint kibocsáthatja saját értékeit az irányítása alatt álló Observer-eknek.
Next
Folyamatosan bocsátja ki az adatokat.
Error
Errorral tudsz a stream-ben elhelyezni hibát.
Complete
Lezárja a stream-et. Ez az utolsó adat, ami jött és nincs több.