首页 > 解决方案 > debounceTime 每次发送请求

问题描述

每次输入电子邮件表单时,异步验证器都会向 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;
            }
        })
     ) 
   }
  }

标签: javascriptangulartypescriptrxjsdebounce

解决方案


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


推荐阅读