Используя Http, мы вызываем метод, который выполняет сетевой вызов и возвращает HTTP-наблюдаемый:
getCustomer() {
return this.http.get('/someUrl').map(res => res.json());
}
Если мы возьмем это наблюдаемое и добавим к нему несколько подписчиков:
let network$ = getCustomer();
let subscriber1 = network$.subscribe(...);
let subscriber2 = network$.subscribe(...);
Мы хотим, чтобы это не вызывало множественные сетевые запросы.
Это может показаться необычным сценарием, но на самом деле это довольно часто: например, если вызывающий абонент подписывается на наблюдаемое, чтобы отобразить сообщение об ошибке, и передает его в шаблон с использованием async-канала, у нас уже есть два подписчика.
Каков правильный способ сделать это в RxJs 5?
А именно, это работает нормально:
getCustomer() {
return this.http.get('/someUrl').map(res => res.json()).share();
}
Но разве это идиоматический способ сделать это в RxJs 5, или мы должны сделать что-то другое вместо этого?
Примечание. Согласно HttpClient
5 новому HttpClient
, часть .map(res => res.json())
во всех примерах теперь бесполезна, так как результат JSON теперь принимается по умолчанию.