0
所以這個代碼運行,但它發射的回調.flatmap 5次:RxJS - 如何積累數據和行爲就可以了,無需多次回調
var i = 0;
const values = {};
return this.obsClient.take(5)
.flatMap(v => {
const time = Date.now();
values[i] = {time: time, count: v.clientCount};
console.log('values => ', values);
i++;
return Rx.Observable.timer(100)
});
「值=> X」將得到記錄5倍。
我想,也許,如果我做了以下內容,它會發射的flatMap回調之前積累的所有5個數據:
var i = 0;
const values = {};
return this.obsClient.take(5).takeLast(5)
.flatMap(v => {
const time = Date.now();
values[i] = {time: time, count: v.clientCount};
console.log('values => ', values);
i++;
return Rx.Observable.timer(100)
});
,但它仍然記錄「值=> x」的5倍。 如何積累數據,並將所有數據傳遞給回調,並避免發起回調5次?
感謝讓我測試了這一點 –
注;每當達到countCount時,'bufferCount'就會發出一個值。如果你的意圖是準確地有5個項目,然後取消訂閱,那麼使用'.take(5).toArray()'可以發出一個包含你的5個元素數組的值。 –