web:javascript:rxjs
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
web:javascript:rxjs [2019/03/27 23:20] – sgariepy | web:javascript:rxjs [2022/02/02 00:42] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
Référence : [[https:// | Référence : [[https:// | ||
+ | |||
+ | |||
+ | |||
+ | ====== Reactive Programming ====== | ||
+ | |||
+ | * [[http:// | ||
+ | * RxJS est la version JavaScript | ||
+ | * Observable Pattern | ||
+ | * Asynchronous programming | ||
+ | |||
+ | |||
+ | <code javascript> | ||
+ | getDataFromLocalMemory() | ||
+ | .skip(10) | ||
+ | .take(5) | ||
+ | .map({ s -> return s + " transformed" | ||
+ | .subscribe({ println " | ||
+ | </ | ||
+ | |||
Ligne 15: | Ligne 34: | ||
====== Syntaxe ====== | ====== Syntaxe ====== | ||
- | |||
- | <hidden code> | ||
<code javascript> | <code javascript> | ||
Ligne 28: | Ligne 45: | ||
</ | </ | ||
- | </ | ||
+ | ====== Création d' | ||
+ | |||
+ | ===== of ===== | ||
+ | |||
+ | |||
+ | |||
+ | ===== interval ===== | ||
+ | |||
+ | |||
+ | ===== timer ===== | ||
+ | |||
+ | |||
+ | |||
+ | ===== fromEvent ===== | ||
+ | |||
+ | |||
+ | |||
+ | ===== empty ===== | ||
Ligne 152: | Ligne 186: | ||
</ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== RxJS spécifique à Angular/ | ||
+ | |||
+ | Les exemples sont prises dans le contexte d'une application Angular, mais devrait convenir à tout autre contexte Javascript. | ||
+ | |||
+ | |||
+ | ===== Opérateurs ===== | ||
+ | |||
+ | |||
+ | ==== combineLatest ==== | ||
+ | |||
+ | <code javascript> | ||
+ | observable$.pipe( | ||
+ | combineLatest(anotherObservable$), | ||
+ | map(([obs1Result, | ||
+ | // do something with results. | ||
+ | }) | ||
+ | ).subscribe(); | ||
+ | </ | ||
+ | |||
+ | Différence avec withLatestFrom: | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * | ||
+ | ==== distinct ==== | ||
+ | |||
+ | Exemple de '' | ||
+ | |||
+ | La signature du '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | |||
+ | <code javascript> | ||
+ | @Effect() | ||
+ | requestNewPassword$: | ||
+ | ofType< | ||
+ | distinct( | ||
+ | () => SomeActionTypes.REQUEST_PIZZA_FETCH, | ||
+ | this.actions$.pipe( | ||
+ | ofType< | ||
+ | SomeActionTypes.REQUEST_PIZZA_SUCCESS, | ||
+ | SomeActionTypes.REQUEST_PIZZA_ERROR, | ||
+ | SomeActionTypes.REQUEST_PIZZA_RESET_STATE | ||
+ | ) | ||
+ | ) | ||
+ | ), | ||
+ | mergeMap(action => | ||
+ | // Call to service for request. | ||
+ | ) | ||
+ | ); | ||
+ | </ | ||
+ | |||
+ | ==== flatMap ==== | ||
+ | |||
+ | Permet de faire comme les '' | ||
+ | |||
+ | <code javascript> | ||
+ | this.someService.isReady() | ||
+ | .pipe( | ||
+ | takeUntil(this.destroyed$), | ||
+ | filter(isReady => isReady), | ||
+ | flatMap(() => this.catService.getCat(1)), | ||
+ | flatMap(cat => this.foodService.getFood(cat)), | ||
+ | tap(food => (this.food = food)) | ||
+ | ) | ||
+ | .subscribe(); | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
====== Sources ====== | ====== Sources ====== |
web/javascript/rxjs.1553725212.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)