J'ai récemment remarqué que je pouvais renvoyer une valeur dans .pipe()
mais pas dans .subscribe()
.
Quelle est la différence entre ces deux méthodes?
Par exemple, si j'ai cette fonction, appelons-la "dépôt", qui est censé renvoyer le solde du compte, si je le fais:
deposit(account, amount){
return this.http.get('url')
.subscribe(res => {
return res;
}
}
Il retourne un observable et si je fais ceci:
deposit(account, amount){
return this.http.get('url')
.pipe(
map(res => {
return res;
});
);
}
Il renvoie le solde du compte comme prévu.
Alors pourquoi?
La méthode pipe
permet de chaîner des opérateurs observables, tandis que subscribe
permet d'activer l'observable et d'écouter les valeurs émises.
La méthode pipe
a été ajoutée pour permettre à webpack de supprimer des opérateurs inutilisés du dernier paquet JavaScript. Cela facilite la création de fichiers plus petits.
Par exemple, si j'ai cette fonction, appelons-la "dépôt", qui est censé renvoyer le solde du compte si je le fais:
Ce n'est pas ce qu'il revient. Il renvoie l'objet Subscription
créé lorsque vous avez appelé Subscribe
.
il renvoie le solde du compte comme prévu.
Ce n'est pas ce qu'il revient. Il retourne un Observable
qui utilise un opérateur map
. L'opérateur de carte dans votre exemple ne fait rien.