V RxJS je pozorovateľná funkcia, ktorá sa používa na vytvorenie pozorovateľa a jeho pripojenie k zdroju, z ktorého sa očakávajú hodnoty. Napríklad kliknutia, udalosti myši z prvku DOM alebo požiadavka Http atď. sú príkladom pozorovateľného.
Inými slovami, môžete povedať, že pozorovateľ je objekt s funkciami spätného volania, ktorý sa volá, keď dôjde k interakcii s pozorovateľným. Zdroj napríklad interagoval, kliknutie na tlačidlo, HTTP žiadosť atď.
Pozorovateľné položky možno definovať aj ako lenivé kolekcie Push viacerých hodnôt. Pozrime sa na jednoduchý príklad, aby sme pochopili, ako sa pozorovateľné prvky používajú na posúvanie hodnôt.
Pozrite si nasledujúci príklad:
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); });
Vo vyššie uvedenom príklade je pozorovateľný prvok, ktorý pri prihlásení na odber okamžite a synchrónne vloží hodnoty 10, 20, 30, ale hodnota 40 sa vloží po jednej sekunde od volania metódy odberu.
Ak chcete vyvolať pozorovateľné a vidieť vyššie uvedené hodnoty, musíte sa prihlásiť na odber. Pozrite si nasledujúci príklad:
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');
Výkon:
java reťazce
Keď spustíme vyššie uvedený program, na konzole dostaneme nasledujúci výsledok:
ako upgradovať java
Pozorovateľné sú zovšeobecnenia funkcií
Vieme, že pozorovateľné prvky sú funkcie, ktoré fungujú ako kliknutia, udalosti myši z prvku DOM alebo požiadavky Http atď., ale pozorovateľné prvky nie sú ako Emittery udalostí, ani ako Promises pre viaceré hodnoty. V niektorých prípadoch sa môžu pozorovateľné objekty správať ako EventEmitters, konkrétne keď sú multicastované pomocou RxJS Subjects, ale zvyčajne sa nesprávajú ako EventEmitters.
Pozorovateľné sú ako funkcie s nulovými argumentmi, ale tieto zovšeobecňujú, aby umožňovali viacero hodnôt.
Pozrime sa na príklad, aby sme to jasne pochopili.
Jednoduchý príklad funkcie:
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);
Výkon:
Uvidíte nasledujúci výstup:
'Hello World!' 123 'Hello World!' 123
Napíšme rovnaký príklad, ale s pozorovateľnými:
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); });
Výkon:
Uvidíte rovnaký výstup ako vyššie:
Môžete to vidieť, pretože funkcie aj Observables sú lenivé výpočty. Ak funkciu nezavoláte, súbor console.log('Hello World!') sa nestane. V prípade Observables, ak to „nezavoláte“ s predplatením, konzola.log('Hello World!') sa nestane.
Fungovanie pozorovateľa
Pozorovateľ má tri fázy:
linux ako premenovať adresár
- Vytváranie pozorovateľných objektov
- Prihlásenie na odber Observables
- Vykonávanie pozorovateľných objektov
Vytváranie pozorovateľných objektov
Existujú dva spôsoby, ako vytvoriť pozorovateľné položky:
- Použitie metódy pozorovateľného konštruktora
- Pomocou metódy Observable create().
Použitie metódy pozorovateľného konštruktora
Vytvorme pozorovateľný pomocou metódy pozorovateľného konštruktora a pridáme správu „Toto je moje prvé pozorovateľné“ pomocou metódy subscriber.next dostupnej v rámci Observable.
python // operátor
súbor testrx.js:
import { Observable } from 'rxjs'; var observable = new Observable( function subscribe(subscriber) { subscriber.next('This is my first Observable') } );
Pozorovateľné môžete vytvoriť aj pomocou metódy Observable.create() takto:
import { Observable } from 'rxjs'; var observer = Observable.create( function subscribe(subscriber) { subscriber.next('This is my first Observable') } );
Prihlásenie na odber Observables
Prihlásenie na odber pozorovateľného objektu je ako volanie funkcie. Poskytuje spätné volanie, kam budú údaje doručené.
Môžete sa prihlásiť na odber pozorovateľa pomocou nasledujúcej syntaxe:
Syntax:
observable.subscribe(x => console.log(x));
Pozrite si vyššie uvedený príklad s odberom:
súbor testrx.js:
import { Observable } from 'rxjs'; var observer = new Observable( function subscribe(subscriber) { subscriber.next('This is my first Observable') } ); observer.subscribe(x => console.log(x));
Výkon:
Vykonávanie pozorovateľných objektov
Pozorovateľný sa vykoná, keď sa prihlási. Vo všeobecnosti existujú tri metódy v pozorovateľovi, ktoré sú oznámené:
Ďalšie(): Táto metóda sa používa na odosielanie hodnôt ako číslo, reťazec, objekt atď.
dokončiť(): Táto metóda neposiela žiadnu hodnotu. Znamená to, že pozorovateľný údaj je dokončený.
chyba(): Táto metóda sa používa na oznámenie chyby, ak existuje.
algoritmus pre rsa
Pozrime sa na príklad, kde sme vytvorili pozorovateľné so všetkými tromi upozorneniami a vykonajte tento príklad:
súbor testrx.js:
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.'));
Chybová metóda sa vyvolá iba v prípade chyby. Keď spustíte vyššie uvedený kód, v konzole uvidíte nasledujúci výstup.
Výkon: