Observable

Dans RxJS, la structure utilisée pour représenter un flux de données asynchrones est Observable.

Un Observable peut-être vu comme une promesse qui est capable de retourner plusieurs valeurs.

// Angular 5
// import {Observable} from 'rxjs/Observable'

// Angular 6
import {Observable} from 'rxjs'

// Créer un observable

//      next() permet d emettre une valeur
//      complete() permet de fermer l'observable
const observable$ = Observable.create(observer => {
    setTimeout(()=>  observer.next(1), 1000)
    setTimeout(()=>  observer.next(2), 2000)
    setTimeout(()=>  observer.complete(), 3000)
})

// Créer un Observateur
observable$.subscribe(
    value => console.log(value),
    error => console.log(error),
    () => console.log('terminé'))

// Résultat

// 1
// 2
// terminé

Convertir en observable

  • Depuis des valeurs :
// Angular 5
// import {Observable} from 'rxjs/Observable'

// Angular 6
import {Observable} from 'rxjs'

// import de l'opérateur Of
import 'rxjs/add/observable/of';

const obs$ = Observable.of('foo', 'bar');
  • Dépuis un tableau
// Angular 5
// import {Observable} from 'rxjs/Observable'
// import 'rxjs/add/observable/from';

// Angular 6
import {Observable} from 'rxjs'
import { from } from 'rxjs';


const obs$ = Observable.from([1,2,3]);
  • Depuis un événement
// Angular 5
// import {Observable} from 'rxjs/Observable';
// import 'rxjs/add/observable/fromEvent';

// Angular 6
import { Observable } from 'rxjs'
import { fromEvent } from 'rxjs';

const obs$ = Observable.fromEvent(document.querySelector('button'), 'click');

// Depuis une promesse
Observable.fromPromise(fetch('/users'));
  • Depuis une promesse
// Angular 5
// import {Observable} from 'rxjs/Observable';
// import 'rxjs/add/observable/fromPromise';

// Angular 6
import { Observable } from 'rxjs'
import { from } from 'rxjs';

const obs$ = Observable.from(fetch('/users'));

HTTP Client

Les requêtes HTTP envoyées via le client HTTP Angular retournent des résultats de type Observable.

// resultat$ est de type Observable
const resultat$ = this._http.get("https://jsonplaceholder.typicode.com/posts");

results matching ""

    No results matching ""