Was ist neu in RxJS v6.5?


In diesem Beitrag werden wir über neue Funktionen und Verbesserungen der neuesten Version von RxJS 6.5.0 sprechen .


Neue fromFetch-Anweisung


RxJS bietet jetzt native Unterstützung für die native Abruf- API, einschließlich der Möglichkeit, Anforderungen mithilfe des AbortControllers zu unterbrechen.


import { of } from 'rxjs'; import { switchMap, catchError } from 'rxjs/operators'; import { fromFetch } from 'rxjs/fetch'; const users$ = fromFetch('https://reqres.in/api/users').pipe( switchMap(response => { if (response.ok) { return response.json(); } else { return of({ error: true, message: `Error ${response.status}` }); } }), catchError((error) => of({ error: true, message: error.message })) ); users$.subscribe({ next(data) { ... }, complete() { ... } }); 

Erweiterte forkJoin-Anweisung


Mir hat es am besten gefallen. Die forkJoin-Anweisung akzeptiert jetzt ein Quellwörterbuch:


 import { forkJoin, timer } from 'rxjs'; import { take, mapTo } from 'rxjs/operators'; const source = forkJoin({ todos: timer(500).pipe(mapTo([{ title: 'RxJS'}])), user: timer(500).pipe(mapTo({ id: 1 })) }); source.subscribe({ next({ todos, user }) { } }); 

Außerdem ist die Verwendung dieses Operators in Form von forkJoin(a, b, c, d) veraltet. Stattdessen sollte forkJoin([a, b, c, d]) geschrieben werden.


 // DEPRECATED forkJoin(of(1), of(2)).subscribe(); // use an array instead forkJoin([of(1), of(2)]).subscribe(); 

Partition beobachtbar


Die vorhandene partition ist jetzt veraltet und wird durch eine neue generische beobachtbare partition .
Die Partition unterteilt das Quellobjekt in zwei beobachtbare Objekte vom Typ, eines für Werte, die das angegebene Prädikat erfüllen, und das zweite für Werte, die dies nicht tun.


 import { fromEvent, partition } from 'rxjs'; const clicks$ = fromEvent(document, 'click'); const [clicksOnH1$, clicksElsewhere$] = partition(clicks$, event => event.target.tagName === 'H1'); clicksOnH1$.subscribe({ next() { console.log('clicked on h1') } }); clicksElsewhere$ .subscribe({ next() { console.log('Other clicked') } }); 

combinLatest wird in den veralteten Status versetzt


Die neue Version verwendet keine combineLatest Signaturen mehr, mit Ausnahme von combineLatest([a, b, c]) . Lesen Sie hier die Gründe für diese Änderung.


Planer


Verwenden Sie die scheduled Anweisung, um den Scheduler für eine vorhandene Observable zu konfigurieren. Geplante (von denen der Scheduler als Parameter verwendet wird) Versionen von from , range und anderen Anweisungen sind veraltet.


 import { of, scheduled, asapScheduler } from 'rxjs'; console.log(1); // DEPRECATED // of(2, asapScheduler).subscribe({ // next(value) { // console.log(value); // } // }); scheduled(of(2), asapScheduler).subscribe({ next(value) { console.log(value); } }); console.log(3) 

Source: https://habr.com/ru/post/de450718/


All Articles