我有一个可观察到的流,它发出一个数字序列。每个发出的值都需要大量的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运算符?-LMLPHP
油门时间:javascript - 使用没有前缀延迟的sampleTime运算符?-LMLPHP

关于javascript - 使用没有前缀延迟的sampleTime运算符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54710733/

10-09 17:04