Как я могу регулировать поток значений, добавленных в поток BehaviourSubject с помощью следующего? - PullRequest
1 голос
/ 14 апреля 2020

Начиная с пустой наблюдаемой, у меня есть постоянный поток событий не-rx js, которые мне нужно регулировать с помощью rx js, но я не могу найти способ создать удушенный вывод. В моем случае использования я не знаю, когда придет первое значение, и я не могу определить частоту поступления новых значений.

https://stackblitz.com/edit/rxjs-behaviorsubject-simpleexample-etebvz?file=index.ts

Я ожидал этот пример для работы и отображения значений, добавленных с помощью next () для регулирования на 1 с, но он не работает.

import { BehaviorSubject, interval } from 'rxjs';
import { tap, map, throttle } from 'rxjs/operators';

const subject = new BehaviorSubject(1);
const example = subject.pipe(
  throttle(ev => interval(1000)),
  tap((ev) => console.log(ev))
)

example.subscribe();

example.next(2);
example.next(3);
example.next(4);
example.next(5);
example.next(6);

Я не могу найти какие-либо примеры в Интернете, чтобы соответствовать этому (очевидно) простому сценарию использования и работе с RX js чувствует себя не интуитивно, чтобы достичь этого. Буду признателен за любую оказанную помощь.

1 Ответ

1 голос
/ 15 апреля 2020

throttleTime позволяет указать количество миллисекунд ожидания до повторной передачи.

const example = subject.pipe(
  throttleTime(1000),
  tap((ev) => console.log(ev))
)

Stackblitz

Я рекомендую проверить дерево решений оператора и щелчок, чтобы увидеть, какие варианты доступны:

У меня есть одна существующая Наблюдаемая

Я хочу игнорировать значения

, которые происходят тоже часто

...