21
在RxJs 5中共享Angular Http网络调用结果的正确方法是什么?
通过使用Http,我们调用了一个方法,该方法进行网络调用并返回可观察到的http: 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 new HttpClient,.map(res => res.json())所有示例中的部分现在都已无用,因为默认情况下现在假定JSON结果。