我如何限制添加到 BehaviourSubject 流的值流?

how can i throttle a stream of values added to a BehaviourSubject stream with next?

从一个空的可观察对象开始,我有一个稳定的非 rxjs 事件流,我需要用 rxjs 来限制它们,但我找不到创建限制输出的方法。在我的用例中,我不知道第一个值何时到达,也无法确定新值到达的频率。

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

我原以为这个例子可以工作,并显示用 next() 添加的值被限制 1s,但它不工作。

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);

我找不到任何在线示例来匹配这个(显然)简单的用例,并且使用 rxjs 来实现这个感觉不直观。任何帮助深表感谢。

throttleTime 允许您指定再次发射前等待的毫秒数。

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

Stackblitz

我建议查看 operator decision tree 并单击以查看可用的选项:

I have one existing Observable

I want to ignore values

that occur too frequently