web-dev-qa-db-fra.com

Différence entre les méthodes .pipe () et .subscribe () sur un observable RXJS

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?

18
Amadou Beye

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.

25
Reactgular