Subject

  • A Subject egy 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 Subject nem 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);
  1. BehaviorSubject:
    • A BehaviorSubject is egy RxJS osztály, de kiegészíti a Subject-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 BehaviorSubject hasznos, 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.
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.

Was this page helpful?