![](/img/trans.png)
[英]RXJS Repeat latest Value of Observable on Emitted Value of another Observable
[英]Rxjs: how to get latest emitted value from a observable
如演示所示,如標題所示
const { combineLatest, interval, of } = rxjs; const { first, last, sample, take, withLatestFrom } = rxjs.operators; const numbers = interval(1000); const takeFourNumbers = numbers.pipe(take(4)); takeFourNumbers.subscribe(x => console.log('Next: ', x)); setTimeout(()=>{ console.log('how can we get the latest value which is 1?'); takeFourNumbers.pipe(first()).subscribe(v=>console.log(v,'actual get')) },2500) // Logs: // Next: 0 // Next: 1 // how can we get the latest value which is 1? // Next: 2 // 0 actual get // Next: 3
<script src="https://cdn.jsdelivr.net/npm/rxjs@7.5.5/dist/bundles/rxjs.umd.js"></script>
就我而言,我只想獲得最新的價值並做一份一次性工作。 我該怎么做?
我在想我們是否有像takeLatest()
或latest()
這樣的運算符? 但是我沒有找到任何人。
問題歸結為共享提供者(數據源)或“熱與冷”可觀察對象,您希望在不同訂閱之間共享最新值,因此您基本上想要一個熱可觀察對象,從間隔運算符返回的可觀察對象是冷的,因此您需要天氣很熱,這樣做很簡單:
const takeFourNumbers = numbers.pipe(take(4), shareReplay(1));
現在不管你訂閱多少次,所有訂閱者都會分享價值
編輯:我的錯,它應該是 shareReplay 以便它在您訂閱它后立即為您提供最后發出的值所以現在您應該從 setTimeout 內的訂閱中獲得 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.