logo

RxJS megfigyelések

Az RxJS-ben a megfigyelhető egy olyan függvény, amely egy megfigyelő létrehozására és a forráshoz való csatolására szolgál, ahonnan az értékeket várják. Például a kattintások, egy DOM-elemből származó egéresemény vagy egy HTTP-kérés stb. a megfigyelhető példák.

Más szavakkal, azt mondhatjuk, hogy a megfigyelő egy visszahívási függvényekkel rendelkező objektum, amelyet akkor hívnak meg, ha interakció van a megfigyelhetővel. Például a forrás interakcióba lépett egy példa, gombkattintás, Http kérés stb.

A megfigyelhető elemek több érték lusta Push gyűjteményeként is definiálhatók. Nézzünk egy egyszerű példát, hogy megértsük, hogyan használják a megfigyelhető értékeket az értékek tolására.

Lásd a következő példát:

 import { Observable } from 'rxjs'; const observable = new Observable(subscriber => { subscriber.next(10); subscriber.next(20); subscriber.next(30); setTimeout(() => { subscriber.next(40); subscriber.complete(); }, 1000); }); 

A fenti példában van egy megfigyelhető, amely előfizetéskor azonnal és szinkronban nyomja le a 10, 20, 30 értékeket, de a 40-es érték egy másodperc elteltével az előfizetési metódus hívása óta.

hogyan lehet feltárni az alkalmazás elrejtését androidon

Ha meg akarja hívni a megfigyelhetőt és látni szeretné a fenti értékeket, elő kell fizetnie rá. Lásd a következő példát:

 import { Observable } from 'rxjs'; const observable = new Observable(subscriber => { subscriber.next(10); subscriber.next(20); subscriber.next(30); setTimeout(() => { subscriber.next(40); subscriber.complete(); }, 1000); }); console.log('These are the values just before subscribe'); observable.subscribe({ next(x) { console.log('We have got value ' + x); }, error(err) { console.error('something wrong occurred: ' + err); }, complete() { console.log('Done successfully'); } }); console.log('This value is just after subscribe'); 

Kimenet:

Amikor a fenti programot végrehajtjuk, a következő eredményt kapjuk a konzolon:

RxJS megfigyelések

A megfigyelések a függvények általánosításai

Tudjuk, hogy a megfigyelhető elemek kattintásként, DOM-elemből származó egéreseményként vagy Http-kérésként stb. működő függvények, de a megfigyelhető elemek nem olyanok, mint az EventEmitters, és nem olyanok, mint a több értékre vonatkozó ígéretek. Egyes esetekben a megfigyelhető elemek EventEmittersként működhetnek, nevezetesen, amikor RxJS Subjects használatával csoportos küldés történik, de általában nem EventEmittersként működnek.

A megfigyelhető elemek olyanok, mint a nulla argumentummal rendelkező függvények, de általánosítják ezeket, hogy több értéket is engedélyezzenek.

élő tücskömet

Nézzünk egy példát ennek világos megértésére.

Egy egyszerű példa egy függvényre:

 function foo() { console.log('Hello World!'); return 123; } const x = foo.call(); // same as foo() console.log(x); const y = foo.call(); // same as foo() console.log(y); 

Kimenet:

A következő kimenetet fogja látni:

 'Hello World!' 123 'Hello World!' 123 

Írjuk le ugyanazt a példát, de megfigyelhetőekkel:

 import { Observable } from 'rxjs'; const foo = new Observable(subscriber => { console.log('Hello World!'); subscriber.next(123); }); foo.subscribe(x => { console.log(x); }); foo.subscribe(y => { console.log(y); }); 

Kimenet:

Ugyanazt a kimenetet fogja látni, mint fent:

RxJS megfigyelések

Ezt azért láthatja, mert mind a függvények, mind a megfigyelhetőek lusta számítások. Ha nem hívja meg a függvényt, a console.log('Hello World!') nem fog megtörténni. Ezenkívül az Observables esetében, ha nem hívja meg az előfizetéssel, a console.log('Hello World!') nem fog megtörténni.

Egy megfigyelhető munkája

A megfigyelésnek három fázisa van:

  • Megfigyelhető elemek létrehozása
  • Feliratkozás az Observables szolgáltatásra
  • Megfigyelhető elemek végrehajtása

Megfigyelhető elemek létrehozása

Kétféleképpen hozhat létre megfigyelhető elemeket:

java nyomtatás
  • Megfigyelhető konstruktor módszerrel
  • Megfigyelhető create() metódus használata

Megfigyelhető konstruktor módszerrel

Hozzunk létre egy megfigyelhetőt a megfigyelhető konstruktor módszerrel, és adjunk hozzá egy üzenetet: „Ez az első megfigyelhető” a Megfigyelhetőben elérhető subscriber.next metódussal.

testrx.js fájl:

 import { Observable } from 'rxjs'; var observable = new Observable( function subscribe(subscriber) { subscriber.next('This is my first Observable') } ); 

Megfigyelhetőt az Observable.create() metódussal is létrehozhat az alábbiak szerint:

 import { Observable } from 'rxjs'; var observer = Observable.create( function subscribe(subscriber) { subscriber.next('This is my first Observable') } ); 

Feliratkozás az Observables szolgáltatásra

A megfigyelésre való feliratkozás olyan, mint egy függvény meghívása. Visszahívásokat biztosít, ahová az adatokat kézbesítik.

A következő szintaxis használatával iratkozhat fel egy megfigyelésre:

Szintaxis:

 observable.subscribe(x => console.log(x)); 

Lásd a fenti példát az előfizetéssel:

testrx.js fájl:

 import { Observable } from 'rxjs'; var observer = new Observable( function subscribe(subscriber) { subscriber.next('This is my first Observable') } ); observer.subscribe(x => console.log(x)); 

Kimenet:

RxJS megfigyelések

Megfigyelhető elemek végrehajtása

A megfigyelhető előfizetéskor végrehajtódik. Általában három módszer van egy megfigyelőben, amely értesítést kap:

következő(): Ezt a módszert olyan értékek küldésére használják, mint egy szám, karakterlánc, objektum stb.

java érvényes azonosítók

teljes(): Ez a módszer nem küld értéket. Azt jelzi, hogy a megfigyelhető befejeződött.

hiba(): Ezzel a módszerrel értesítjük a hibát, ha van ilyen.

Lássunk egy példát, ahol létrehoztuk a megfigyelhetőt mindhárom értesítéssel, és végrehajtjuk azt a példát:

testrx.js fájl:

 import { Observable } from 'rxjs'; var observer = new Observable( function subscribe(subscriber) { try { subscriber.next('This is my first Observable'); subscriber.next('Testing Observable'); subscriber.complete(); } catch(e){ subscriber.error(e); } } ); observer.subscribe(x => console.log(x), (e)=>console.log(e), ()=>console.log('Observable is completed now.')); 

A hibamódszert csak hiba esetén hívja meg a rendszer. A fenti kód futtatásakor a következő kimenetet fogja látni a konzolon.

Kimenet:

RxJS megfigyelések