Sobes.tech
Middle

Mis on observable?

sobes.tech AI

Vastus AI-lt

Observable on objekt, mis esindab andmevoogu või sündmuste voogu, mis võib olla asünkroonne. Jälgitavad allikad võivad välja saata väärtusi teatud aja jooksul ning tellijad (Subscribers või Observers) saavad nendele väärtustele reageerida nende ilmumise ajal.

Peamised kontseptsioonid:

  • Observable (Jälgitav allikas): Andmete või sündmuste allikas.
  • Observer (Jälgija): Objekt, millel on meetodid next, error, complete, mis reageerivad Observable'i sündmustele:
    • next: Järgmise väärtuse saamine.
    • error: Viga tekkis.
    • complete: Andmevoog on lõppenud.
  • Subscription (Tellimus): Seos Observable'i ja Observeri vahel. Tellimus luuakse, kutsudes välja subscribe meetodi Observable'il. See võimaldab Observel saada väärtusi ning hallata tellimuse elutsüklit.
  • Operators (Operaatorid): Funktsioonid, mis muudavad, ühendavad ja haldavad Observable'i vooge. Näited: map, filter, mergeMap, debounceTime.

Observable võib erinevalt Promise'ist välja saata palju väärtusi aja jooksul, kujutades endast andmevoogu, mitte ühekordset asünkroonset sündmust.

Näide RxJS-is (populaarne reaktiivne programmeerimise raamatukogu):

import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

// Observable loomine massiivist
const source = new Observable(observer => {
  observer.next(1);
  observer.next(2);
  observer.next(3);
  observer.complete(); // Voogu lõpetamine
});

// Tellimine ja operaatori kasutamine
const subscription = source.pipe(
  map(value => value * 2) // `map` operaator topelt iga väärtuse
).subscribe({
  next: value => console.log(value), // Väärtuste saamine: 2, 4, 6
  error: err => console.error(err), // Vea töötlemine
  complete: () => console.log('Complete!') // Lõpp
});

Peamised eelised:

  • Reaktiivne programmeerimine: mugav asünkroonsete voogude haldamine.
  • Kompositsioonivõime: voogude lihtne ühendamine ja muutmine operaatorite abil.
  • Elutsükli haldamine: tellimine võimaldab selgelt kontrollida andmete saamist ning vältida mälulekkeid.