通过使用 Http,我们调用执行网络调用并返回 http observable 的方法:
getCustomer() {
return this.http.get('/someUrl').map(res => res.json());
}
如果我们将此可观察对象添加多个订阅者:
let network$ = getCustomer();
let subscriber1 = network$.subscribe(...);
let subscriber2 = network$.subscribe(...);
我们想要做的是确保这不会导致多个网络请求。这可能看起来像一个不寻常的场景,但实际上很常见:例如,如果调用者订阅可观察对象以显示错误消息,并使用异步管道将其传递到模板中,则我们已经有了两个订阅者。
在 RxJs 5 中正确的做法是什么?
也就是说,这似乎还不错:
getCustomer() {
return this.http.get('/someUrl').map(res => res.json()).share();
}
但是在RxJs 5中,这是惯用方法吗?还是我们应该选择其他方法?
注意:根据Angular 5的新HttpClient
,所有示例中的.map(res => res.json())
部分现在已经无用了,因为默认情况下假定为JSON结果。