2
我有一個值的流,我使用下限和上限進行限制,並減少日誌記錄的數量,如果它們發生更改,我只想發出值。問題是,在下面的代碼片段第二distinctUntilChanged()
仍然會產生重複:RxJs:distinctUntilChanged仍然發出重複值
Observable // emits i.e. [2, 2, 2, 5, 5, 10, 20]
.distinctUntilChanged() // becomes [2, 5, 10, 20]
.map(target => {
const correctedTarget = Math.min(Math.max(target, MINIMUM), MAXIMUM); // Let's say min: 5, max: 10
if(correctedTarget != target) {
logger.warn(`Prediction wants to scale out-of-bounds to ${target}, limiting to ${correctedTarget}`);
}
return correctedTarget;
}) // becomes [5, 5, 10, 10]
.distinctUntilChanged() // should be [5, 10], but is [5, 5, 10, 10]
的RxJs文檔指出過濾器默認爲一個簡單的相等比較,所以我預計,這應該只是工作™。
你完全確定你的價值觀是按順序排列的?我把你的代碼和rxjs 4一起運行,一切都很完美。 –
是的,我在最後一行之前和之後添加了'.do(val => {logger.debug(value);})',可以確認它保持發出相同的值。 – Sander
好的。你可以請張貼完整的示例代碼,展示這個問題?你能否也請張貼你正在使用哪個版本的rxjs?正如我所說的,我運行的快速樣本轉換工作正常。 –