validation - 异步/等待电子邮件验证
问题描述
我正在尝试编写一个函数来检查使用 Async/Await 输入表单输入的电子邮件。它看起来像这样:
//Check email entered
if($('email')){
$('email').observe('blur', function() {
//Validate email
(async () => {
await resetMessages('email');
checkEmptyField('email');
checkEmailExists(); //Checks if email already exists.
checkEmailDomain(); //Checks for a valid domain.
})()
});
}
我对 Async/Await 完全陌生,坦率地说,我不知道自己在做什么,仍然试图绕开它。
显然,我想检查每个函数,如果前一个测试通过,则只传递给下一个函数。相反,例如,如果该字段为空,则向用户发送消息并且不要移动到下一个函数。
这是 checkEmailExists() 函数的示例:
function checkEmailExists() {
const email = $F('email');
if(email!=''){
const url = '/global/validate/?action=check-email-exists&e=' + email;
let result;
fetch(url)
.then(async function(data){
result = await data.text();
if(result == 'OK'){
setMessage('message', defaultMessage, 'classInfo');
$('email').addClassName('ok-field');
}
if(result == 'EXISTS'){
setMessage('message', 'Email address is already registered., 'classBad');
$('email').addClassName('bad-field');
}
if(result == 'INVALID'){
setMessage('message', 'Email address is invalid.', 'classBad');
$('email').addClassName('bad-field');
}
})
.catch(function(error) {
console.log(error);
});
}
}
问题是我不知道该怎么做,有人可以帮我正确编码。
干杯。
解决方案
你检查 email 函数应该返回一个承诺,它是 awiatable。
所以,返回 fetch 调用。
推荐阅读
- python - 在 Django 中的另一个模型中使用一个模型
- html - 直接子级(子级组合器)选择器不限于子级
- tensorflow - ONNX 转换的 TensorFlow 保存模型在 CPU 上运行,但不在 GPU 上
- c# - 使用带有 yield 关键字和 MemoryStream 的 Enumerable 方法
- c# - 反转字符串只显示第一个字符,并且在多行上......为什么?
- google-apps-script - 使用 google 脚本发送定期邮件
- django - 一个单独的 python 包中的 Django 应用程序
- auth0 - Spartacus3.2 - Auth0 注销给出 CORS 错误
- windows - 如何使用 Windows DFS 复制严格序列化一个文件夹的复制?
- swift - 如何快速将多张图片从 URL 保存到本地存储?