ما هو الجديد في RxJS v6.5


في هذا المنشور ، سنتحدث عن الميزات الجديدة والتحسينات الخاصة بأحدث إصدار من الإصدار RxJS 6.5.0 .


بيان fromFetch جديد


يوفر RxJS الآن الدعم الأصلي لواجهة برمجة تطبيقات جلب المعلومات الأصلية ، بما في ذلك القدرة على مقاطعة الطلبات باستخدام AbortController .


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() { ... } }); 

بيان forkJoin المحسن


اعجبني اكثر يقبل بيان forkJoin الآن قاموس مصدر:


 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 }) { } }); 

بالإضافة إلى ذلك ، يتم إهمال استخدام هذا العامل في شكل forkJoin(a, b, c, d) ؛ بدلاً من ذلك ، يجب كتابة forkJoin([a, b, c, d]) .


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

التقسيم يمكن ملاحظتها


تم الآن إهمال بيان partition الحالي ، واستبدله بيان partition عام يمكن ملاحظته.
يقسم التقسيم الكائن المصدر إلى كائنين من النوع يمكن ملاحظته ، أحدهما للقيم التي تفي بالتأثير المحدد ، والثاني للقيم التي لا تفي بالغرض.


 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') } }); 

الجمع بين أحدث نقل إلى حالة إهمال


لم يعد الإصدار الجديد يستخدم توقيعات combineLatest ، باستثناء combineLatest([a, b, c]) . اقرأ أسباب هذا التغيير هنا .


مخططي


استخدم العبارة scheduled لتكوين المجدول لملاحظة موجودة. يتم إهمال الإصدارات المخططة (تلك التي تأخذ المجدول كمعلمة) من البيانات from range والعبارات الأخرى.


 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/ar450718/


All Articles