我想知道是否有可能使用 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 筛选器为自己留出一个时间间隔,以便在触发可观察量触发下一个值之前允许更多更改。