仅当n毫秒没有输入时才调用服务

时间:2018-04-18 13:56:26

标签: angular typescript

我想知道是否有可能使用rxjs以编程方式使用TypeScript实现以下指令:

致电服务。但仅当文本字段中的最后一个输入发生在n毫秒或更长时间之前。

e.g。

12:30.450> 'K'已进入。

12:30.500> 'E'进入了。差距是50毫秒。不采取任何行动。

12:30.550> 'Y'进入了。差距是50毫秒。不采取任何行动。

12:31.050>最近500毫秒没有输入。致电服务。

我想过使用这个结构:

return Observable.timer(500).switchMap(() => {
    return this.compare().map(duplication => {
        return (duplication === true) ? { duplicateName: true } : null;
    });
}); 

但它只提供延迟。完全考虑给定的最小间隙时间,它不会忽略该调用。

有没有人知道在这种情况下如何处理松散的目标?

1 个答案:

答案 0 :(得分:2)

听起来您想使用DebounceTime,请参阅https://www.learnrxjs.io/operators/filtering/debouncetime.html

您可以使用debounceTime过滤器为自己留出时间间隔,以便在触发observable触发下一个值之前允许更多更改。