来自this article:
const debouncedInput = example.debounceTime(5);
const subscribe = debouncedInput.subscribe(val => {
console.log(`Debounced Input: ${val}`);
});
第一个密钥后,debouncedInput
等待调用观察者5毫秒?
还假设用户在5毫秒间隔到期之前继续输入。在发布事件/源值之前,debouncedInput
Observable是否等到不间断的5毫秒时间过去了?
就一个例子而言(根据@OJKwon的答案中非常有用的大理石图)假设-
代表一毫秒。我们有以下内容:
-a--b--c-------d
在这种情况下,监视间隔的计时器将在以下位置重新启动:
abc
在13毫秒时发出,因为在那段时间内没有其他事件d
abcd
在19毫秒时发出,因为没有输入其他值答案 0 :(得分:2)
debounceTime
运算符的作用是在指定的时间范围内延迟源可观察发射。如果在延迟期间发出另一个源值:
RxJS marble test diagram很好地说明了这一点。让我们回顾几个案例。
source.debountTime(20)
时, const source = '-a--------b------';
const expected = '---a--------b----';
所有源值都只是被延迟了。
const source = '-a--bc--d---|';
const expected = '---a---c--d-|';
发出a
的时间延迟了20毫秒,b
在下一次发射的时间跨度为20毫秒之前发出了c
,d
在c
后延迟了20毫秒确实
总结debounceTime
运算符函数作为速率限制器,只允许在给定的时间范围内发出单个值。