AFE_exam

Q02: Reactive Programming med RxJS og Netværkskommunikation i Angular

Reactive Programming ved hjælp af RxJS

Hvad er Reactive Programming?

Reactive Programming er et programmeringsparadigme, der arbejder med asynkrone datastrømme. Det er fordelagtigt da vi arbejder med netværksprotokolmer som er asynkrone. Med Reactive Extensions for JavaScript (RxJS) kan vi bruge observables, som er datastrømme, der udsender værdier over tid. RxJS er ideelt til at håndtere asynkrone operationer, såsom API-kald og brugerinteraktioner(events), fordi det reducerer kompleksiteten af at arbejde med samtidige og dynamiske hændelser.


Nøglebegreber i RxJS

1. Observables

En observable repræsenterer en strøm af data, der kan udsende flere værdier over tid.

Konvention: Variabler, der er observables, navngives ofte med $ som suffix.

Eksempel fra handin:


2. Subscriptions

En subscription forbinder en observer med en observable. Dette initierer datastrømmen. Subscriptionen kan bruges til at afbryde forbindelsen og forhindre hukommelseslækager.

Eksempel fra handIn:


3. RxJs Operators

Operators er funktioner, der manipulerer datastrømme. De bruges enten til at oprette nye observables (creation operators) eller ændre eksisterende (pipeable operators).


Fordele ved Reactive Programming

  1. Asynkronitet: Gør det nemt at håndtere samtidige datastrømme.
  2. Effektivitet: Reducerer kompleksiteten i netværks- og eventhåndtering.
  3. Modularitet: Operators gør det nemt at genbruge logik.

Netværkskommunikation i Angular

HttpClientModule

Angulars HttpClientModule er et kraftfuldt værktøj til at håndtere HTTP-anmodninger. Det fungerer som et wrapper-lag omkring browserens XMLHttpRequest-API og gør det nemt at udføre asynkrone operationer.


Hvordan bruges HttpClientModule?

1. Opsætning

For at bruge HttpClient, skal HttpClientModule importeres i AppModule.

Eksempel:

2. Anvendelse af HttpClient

HttpClient kan injiceres i services for at centralisere al API-logik.

Eksempel:

3. Integration med RxJS

Alle HTTP-anmodninger returnerer observables. Dette gør det muligt at anvende RxJS operators som map, filter og catchError.

Eksempel:


Interceptors

En interceptor er en service, der interagerer med HTTP-anmodninger og -svar. Det bruges til at tilføje fælles logik som autorisationstokens eller fejlhåndtering.

Eksempel:


Fejlhåndtering

Fejl kan håndteres med RxJS-operatoren catchError. Dette sikrer, at brugeren ikke ser en brudt applikation, hvis der opstår fejl.

Eksempel:


Fordele ved Angulars Netværkskommunikation

  1. Struktur: Brug af services og DI centraliserer HTTP-logik.
  2. Reaktivitet: Observables gør det nemt at reagere på dataændringer.
  3. Genanvendelighed: Interceptors og RxJS operators gør koden modulær og fleksibel.
  4. Sikkerhed: Interceptors gør det nemt at implementere fælles sikkerhedslogik.