RXJS上可观察到的方法.pipe()和.subscribe()之间的区别

时间:2018-07-10 15:41:16

标签: javascript angular rxjs

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

这两种方法有什么区别?

例如,如果我具有此功能,则将其称为“存款”,如果执行此操作,该存款应返回帐户余额:

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

它返回一个可观察的,如果我这样做:

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

它按预期返回帐户余额。

那为什么呢?

1 个答案:

答案 0 :(得分:12)

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

添加了pipe方法,以允许 webpack 从最终的JavaScript包中删除未使用的运算符。这样可以更轻松地构建较小的文件。

  

例如,如果我具有此功能,则将其称为“存款”,如果我这样做,该存款应返回帐户余额:

那不是它返回的内容。它返回调用Subscription时创建的Subscribe对象。

  

它按预期返回帐户余额。

那不是它返回的内容。它返回一个使用Observable运算符的map。您的示例中的地图运算符不执行任何操作。