javascript - 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;
}
})
)
}
}
解决方案
debounceTime
操作符必须在发出keyup
事件的Observable 之后进行管道传输。您可以使用fromEvent
运算符来实现这一点。
推荐阅读
- c# - NPM 脚本“启动”退出,但未指示 create-react-app 服务器正在侦听请求
- java - Apache POI HSSF/XSSF 到 XLS/XLSX 的映射
- r - 无法在 rstudio Windows10 中更新软件包
- regex - URL 上的 Grok 和正则表达式
- amazon-web-services - 无法删除 S3 存储桶,因为它不存在
- firebase - Firebase serve 正在为我的项目的旧版本提供服务
- java - 使用 while 循环遍历 Firebase 数据库
- c++ - 为什么 LC_ALL setlocale 设置会影响 Powershell 中的 cout 输出?
- tensorboard - 无法在 ray 中定义自定义指标
- php - 尝试获取文件时,Laravel 6 Storage 导致 404 错误