最近我注意到我可以在.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;
});
);
}
它按预期返回帐户余额。
那为什么呢?
答案 0 :(得分:12)
pipe
方法用于链接可观察的运算符,而subscribe
方法用于激活可观察的变量并监听发射的值。
添加了pipe
方法,以允许 webpack 从最终的JavaScript包中删除未使用的运算符。这样可以更轻松地构建较小的文件。
例如,如果我具有此功能,则将其称为“存款”,如果我这样做,该存款应返回帐户余额:
那不是它返回的内容。它返回调用Subscription
时创建的Subscribe
对象。
它按预期返回帐户余额。
那不是它返回的内容。它返回一个使用Observable
运算符的map
。您的示例中的地图运算符不执行任何操作。