Отдельный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');
        });
    });
});

0 ответов

Другие вопросы по тегам