Rxjs 可观察和如何控制结果速度

Rxjs 可观察和如何控制结果速度,rxjs,observable,rxjs-pipeable-operators,Rxjs,Observable,Rxjs Pipeable Operators,我正在寻找一个操作符,它可以帮助我调整从可观察到的物体发出的结果的速度,它看起来是这样的: [--A-BC--D-E----------------] [--A----B----C----D----E----] 我尝试了AuditTime(),但它不会重播间隔之间发出的结果,它会执行以下操作: [--A-BC--D-E----------------] [--A----C----E--------------] 谢谢你的帮助 我认为这应该满足您的需要: const e1 = cold('-

我正在寻找一个操作符,它可以帮助我调整从可观察到的物体发出的结果的速度,它看起来是这样的:

[--A-BC--D-E----------------]
[--A----B----C----D----E----]
我尝试了AuditTime(),但它不会重播间隔之间发出的结果,它会执行以下操作:

[--A-BC--D-E----------------]
[--A----C----E--------------]

谢谢你的帮助

我认为这应该满足您的需要:

const e1 =  cold('--A-BC--D-E----------------|');
const expected = '--A----B----C----D----E----|';

const source = e1.pipe(
  concatMap(val => of(false).pipe(
    delay(5, scheduler),
    takeWhile(Boolean),
    startWith(val),
  )),
);

expectObservable(source).toBe(expected);
这里的诀窍是,我使用
concatMap
总是等到上一个可观察对象完成。内部可观测对象发出该值,然后延迟其自身的完成,因此
concatMap
强制执行两次发射之间的延迟


请看现场演示:

我可以问一下,可以观察到的源是否长寿,也就是说,在最后一次发射通过管道后,它是否再次发射?这是否可能:[--A-BC--D-e--F-]?是的。也许我对观察者/观察者的知识不够好。。。也许这是你应该在观察者方面做的事情……好吧,不,这看起来像是管道的任务。我就是找不到任何内置的;)您可以看看这个:但我担心这会导致长寿命观测出现问题,因为zip操作符也会对计时器发射进行排队。