RXJS可观察的方法.pipe()和.subscribe()之间的差异

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RXJS可观察的方法.pipe()和.subscribe()之间的差异相关的知识,希望对你有一定的参考价值。

我最近注意到我可以在.pipe()中返回一个值,但不能在.subscribe()中返回。

这两种方法有什么区别?

例如,如果我有这个功能,让我们称之为“存款”,如果我这样做,它应该返回账户余额:

deposit(account, amount){
    return this.http.get('url')
    .subscribe(res => {
        return res;
    }
}

如果我这样做,它会返回一个observable:

deposit(account, amount){
    return this.http.get('url')
    .pipe(
        map(res => {
            return res;
        });
    );
}

它按预期返回帐户余额。

所以为什么?

答案

pipe方法用于链接可观察的运算符,而subscribe用于激活可观察和监听发出的值。

添加了pipe方法以允许webpack从最终的javascript包中删除未使用的运算符。它使构建较小的文件更容易。

例如,如果我有这个功能,让我们称之为'存款',它应该返回帐户余额,如果我这样做:

这不是它的回报。它返回调用Subscription时创建的Subscribe对象。

它按预期返回帐户余额。

这不是它的回报。它返回一个使用Observable运算符的map。示例中的map运算符不执行任何操作。

以上是关于RXJS可观察的方法.pipe()和.subscribe()之间的差异的主要内容,如果未能解决你的问题,请参考以下文章

了解rxjs中的SwitchMap

每次传入可观察值(RxJS)时调用方法

rxjs中常用的操作符

缺少可观察的方法 RxJS 5.0.0-beta.0

在可管道 rxjs 运算符的组合管道中捕获错误

一个一个可观察的 RxJS