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

问题描述 投票:10回答:1

我最近注意到我可以在.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;
        });
    );
}

它按预期返回帐户余额。

所以为什么?

javascript angular rxjs
1个回答
11
投票

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

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

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

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

它按预期返回帐户余额。

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

© www.soinside.com 2019 - 2024. All rights reserved.