javascript - debounceTime 每次发送请求

标签 javascript angular typescript rxjs debouncing

每次在电子邮件表单中输入时,异步验证器都会将请求发送到 JSON。它检查现有的电子邮件,以输入每个字母。如何调用服务器并检查一次,而不是逐个字母?

isEmailExist(): AsyncValidatorFn  {
   return (control: AbstractControl): Observable<any> => {
     return this.usersService.getUserByEmail(control.value).pipe(
        debounceTime(2000),
        map(users => {
            if (users.some(user => user.email.toLowerCase() === control.value.toLowerCase())) {
               return { isExist: true };
            } else {
               return null;
            }
        })
     ) 
   }
  }

最佳答案

debounceTime 运算符必须在发出 keyup 事件的 Observable 之后通过管道传输。 您可以使用 fromEvent运算符来实现这一点。

关于javascript - debounceTime 每次发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64855618/

相关文章:

javascript - 如何在不创建单独的jsp的情况下刷新表?

javascript - 为什么在 JS 中用匿名函数包装每个原型(prototype) "class"对象?

typescript - Angular 2 : Cannot find module '@angular/core'

node.js - 将数组从 JSON 文件导入 Typescript 文件

javascript - 正则表达式中的美元符号 "\$",字边界为 "\b"(PHP/JavaScript)

javascript - 如何获得 td 元素相对父 tr 元素的顶部偏移量?

angular - 将模拟 DOM 事件传递给 Angular 中的组件方法以进行单元测试

angular - 如何将对象从 Parent 组件传递到 Angular 2 中的 Child 组件?

javascript - 3 JS LineBasicMaterial如何在3D轴上绘制简单的粗线?

javascript - 在 Babel 7+ 中使用 TypeScript 有什么好处