RxJS去抖动方法多次触发

问题描述

我试图创建一种方法,等待用户停止写操作,之后只发送一个API请求。

我不知道为什么,但是MyCode()被多次执行。

enter image description here

我的代码

async functionASDF(event: KeyboardEvent) {
   let source = fromEvent(document,'keyup');
   source.pipe(debounceTime(250)).subscribe(c =>{
      MyCode();
   });
}

解决方法

我将通过以下方式进行操作:只需删除该函数,或者如果您在一个类中,请在构造函数内执行此操作。 (但是请确保如果不再需要该流,请取消订阅。否则,会导致内存泄漏。)

let source = fromEvent(document,'keyup');
source.pipe(debounceTime(250)).subscribe(c =>{
  MyCode();
});

如果您只需要来自特定Dom元素的键入命令,例如输入,您可以用该元素替换document