![](/img/trans.png)
[英]What is the difference between Observable.lift and Observable.pipe in rxjs?
[英]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.