RxJS運營商一起,我試圖瞭解RxJS 5share()
運營商的行爲。瞭解份額()的作用與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
絕對是的 - 但我已經更新了答案,並在SO – olsn
上的rxjs-doc-section的附加鏈接上感謝了很多關於此詳細回覆和鏈接! – balteo