Я пытаюсь понять поведение оператора RxJS 5share()
.Понимание доли() Оператор RxJS в действии вместе с Rx.Observable.ajax
Согласно учебникам и документации, share()
превращает холодный наблюдаемый в горячий.
Я стараюсь видеть это в действии. Вот то, что я пробовал:
const search$ = Rx.Observable.ajax('https://www.googleapis.com/books/v1/volumes?q=javascript').share();
И тогда я в первый раз подписаться на него:
search$.subscribe(console.log);
Я вижу из Дев инструментов, выдается запрос сети:
Request URL:https://www.googleapis.com/books/v1/volumes?q=javascript
затем при повторной такой же подписке:
search$.subscribe(console.log);
Я замечаю, что другой сетевой запрос также выдается.
Может кто-то объяснить, что это такое? share()
Операция отображает это поведение? Я ожидал, что будет выдан только один запрос на сеть ...
P.S. с использованием xxx.publishLast().refCount();
вместо xxx.share();
выполняет эту работу, но моя главная задача - понять поведение share()
в приведенном выше контексте.
Спасибо, olsn. Это делает проявленное поведение более ясным. Еще один опрос, который у меня есть: является 'publishLast(). RefCount()' и подразумеваемый никогда-завершающий поток считается хорошей практикой для кэширования HTTP-запросов? – balteo
Да абсолютно - но я обновил ответ с дополнительной ссылкой на раздел rxjs-doc здесь, на SO – olsn
Большое спасибо за этот подробный ответ и ссылку! – balteo