我有一个可观察到的流,它发出一个数字序列。每个发出的值都需要大量的UI更新才能重新定位组件。
因此,我一直在使用sampleTime()
运算符将发射的值限制为周期性的时间间隔,并且效果很好。
例如;
observable.pipe(sampleTime(250)).subscribe(value => console.log(value));
// outputs (periods are delays)
...10...11...12......................14...15...16
这在限制UI更新到较慢的更新间隔方面非常有用。
我遇到了一个问题,
sampleTime(250)
将以250ms的延迟为所有发出的值添加前缀。因此,在上面的示例中,直到250ms之后才发出值14。问题在于值14之前有很长的延迟。因此,我需要一个可观察到的流,该流使用sampleTime()将值限制250ms,但是我不希望在空闲时间后第一个值没有250ms的初始延迟。
例如;
// currently
...10...11...12......................14...15...16
^^^ remove these dots ^^^ remove these dots
// what I really want
10...11...12...................14...15...16
我想不出更好的方法来解释它。
最佳答案
我相信对于您的用例throttleTime更合适。让我们看看使用文档图片的区别:
如您所见,节流时间开始时没有填充
sampleTime:
油门时间:
关于javascript - 使用没有前缀延迟的sampleTime运算符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54710733/