Ricerca nel sito web

typescript - Rxjs: forma abbreviata per creare un observable da un valore o da un observable


Sto usando rxjs con TypeScript. Ho scritto le seguenti due funzioni semplici. Ma penso che rxjs abbia già una funzionalità del genere. rxjs ce l'ha?

export function isObservable(value: any): value is Observable<any> {
  return value instanceof Observable;
}

export function createObservable<T>(value: T | Observable<T>): Observable < T > {
  return isObservable(value) ? value : Observable.of(value);
}

Risposta n. 1

Non credo che RxJS 5 abbia già esattamente questa funzionalità perché sei tu che dovresti essere consapevole del tipo di dati con cui stai lavorando.

Tuttavia, puoi sfruttare il fatto che RxJS gestisce qualsiasi oggetto Observables, Promises, simile a Observable, simile a array e così via nello stesso modo e scrivere quanto segue:

const val1 = Observable.of(42);
const val2 = [42];

Observable.from(val1).subscribe(console.log);
Observable.from(val2).subscribe(console.log);

Questo stamperà in entrambi i casi solo 42 anche se una volta ho usato un Observable con un singolo valore e poi un array con un singolo valore.

Guarda la demo live: https://jsbin.com/fubobon/3/edit?js,console

Risposta n. 2

No, non lo fa, probabilmente perché non è molto utile. Per quali casi d'uso ne avresti bisogno?