La seule différence entre Observable.of
et Observable.from
le format des arguments? Vous aimez les Function.prototype.call
et Function.prototype.apply
?
Observable.of(1,2,3).subscribe(() => {})
Observable.from([1,2,3]).subscribe(() => {})
La seule différence entre Observable.of
et Observable.from
le format des arguments? Vous aimez les Function.prototype.call
et Function.prototype.apply
?
Observable.of(1,2,3).subscribe(() => {})
Observable.from([1,2,3]).subscribe(() => {})
Il est important de noter la différence entre of
et from
lors du passage d'une structure de type tableau (y compris les chaînes):
Observable.of([1, 2, 3]).subscribe(x => console.log(x));
serait imprimer tout le tableau à la fois.
D'autre part,
Observable.from([1, 2, 3]).subscribe(x => console.log(x));
imprime les éléments 1 par 1.
Pour les chaînes, le comportement est le même, mais au niveau du personnage.
Pas tout à fait. Lors du passage d'un tableau à l' Observable.from
, la seule différence entre elle et Observable.of
est la façon dont les arguments sont passés.
Toutefois, Observable.from
accepte un argument qui est
un subscribable objet, d'une Promesse, d'une Observable, un Tableau, un objet iterable ou un tableau comme objet à être converti
Il n'y a pas de comportement similaire Observable.of
- qui toujours n'accepte que les valeurs et n'effectue aucune conversion.
Un autre fait intéressant est Observable.de([]) sera un tableau vide lorsque vous vous abonnez à elle. Où que lorsque vous vous abonnez à Observables.à partir de([]) vous n'en n'importe quelle valeur.
Ceci est important lorsque vous faites un consécutives d'enregistrement avec switchmap. Ex:
.do((data) => {
this.jobService.save$.next(this.job.id);
})
.switchMap(() => this.jobService.addSites(this.job.id, this.sites)
.flatMap((data) => {
if (data.length > 0) {
// get observables for saving
return Observable.forkJoin(jobSiteObservables);
} else {
**return Observable.of([]);**
}
})).do((result) => {
// ..
})
.switchMap(() => this.saveComments())
....
si les données.longueur = 0 dans addSite section, le code ci-dessus est de retour Observables.de([]) et puis s'en va pour enregistrer des commentaires. Mais si vous le remplacer Observables.à partir de([]), le suivant des méthodes sera pas appelé.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.