ОтдельныйUntilChanged в разделе "Наблюдаемая гонка" не работает должным образом
Мы хотим буферизовать данные до тех пор, пока не будут достигнуты следующие два события, такие как время устранения дребезга до 5 или изменение значения. Но на основании приведенного ниже теста мы видим, что он не работает должным образом.
Я хочу добиться такого поведения.
а) При изменении значения я хочу выдать эти буферизованные значения.
б) По истечении времени устранения дребезга я хочу выдать буферизованное значение.
import {
mergeMap,
tap,
map,
takeUntil,
concatMap,
throttle,
throttleTime,
debounceTime,
distinctUntilChanged,
bufferWhen,
} from 'rxjs/operators';
import { of, from, race } from 'rxjs';
import 'jest';
describe('test ', () => {
const source$ = from([
{ name: 'Brian' },
{ name: 'Joe' },
{ name: 'Joe' },
{ name: 'Joe' },
{ name: 'Joe' },
{ name: 'Sue' },
{ name: 'Brian' },
{ name: 'Brian' },
{ name: 'Brian' },
{ name: 'Brian' },
{ name: 'Brian' },
{ name: 'Brian' },
{ name: 'Brian' },
{ name: 'Brian' },
{ name: 'Brian' },
{ name: 'Brian' },
{ name: 'Joe' },
{ name: 'Joe' },
{ name: 'Sue' }
]);
const distinctEvent$ = source$.pipe(
distinctUntilChanged((prev, curr) => prev.name === curr.name),
tap(() => console.log('-1-- AFTER DISTINCT'))
)
const batch$ = source$.pipe(
bufferWhen(() =>
race(
distinctEvent$,
source$.pipe(debounceTime(5)),
),
),
);
it('test', () => {
batch$.subscribe(() => {
console.log('--only');
});
});
});