繁体   English   中英

RXJS observable 方法 .pipe() 和 .subscribe() 之间的区别

[英]Difference between the methods .pipe() and .subscribe() on a RXJS observable

我最近注意到我可以在.pipe()内返回一个值,但不能在.subscribe().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;
        });
    );
}

它按预期返回帐户余额。

所以为什么?

pipe方法用于链接 observable 操作符,而subscribe用于激活 observable 并监听发出的值。

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

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

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

它返回一个可观察的

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

如果我这样做:

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

它按预期返回帐户余额。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM