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



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

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

例如

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;
    });
}); 

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

有没有人知道在这种情况下如何捆绑松散的末端?

听起来你想使用DebounceTime,见 https://www.learnrxjs.io/operators/filtering/debouncetime.html

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

最新更新