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のバージョンを投稿することもできますか?私が言ったように、私が実行した簡単なサンプル変換は正しく機能しました。 –