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:
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:
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:
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: