我如何限制添加到 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))
)
我建议查看 operator decision tree 并单击以查看可用的选项:
I have one existing Observable
I want to ignore values
that occur too frequently
从一个空的可观察对象开始,我有一个稳定的非 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))
)
我建议查看 operator decision tree 并单击以查看可用的选项:
I have one existing Observable
I want to ignore values
that occur too frequently