同步或稍后解决DNS邮件验证(JS)



我使用Node dns.resolveMx((方法添加了一个表单中电子邮件的域验证,代码与此类似

const exampleDomain = 'gmail.com'
const isValid = false;
dns.resolveMx(exampleDomain, (error, addresses) => {
if(!error) {
isValid = true;
}
}

这段代码在我的本地环境中运行良好,但在我的其他环境中崩溃,显然是因为回调函数需要更长的时间才能解析。

我尝试过使用CCD_ 1,但不确定如何定义";resolverFunction";管理它

const timeout = () => new Promise((res) => setTimeout(() => res(true), 3000))
const isValid = await Promise.race([resolverFunction, timeout]);

默认情况下,我希望强制同步进程或在几秒钟后使用true值进行解析。知道吗?

最后我解决了在其他函数中使用Promise包装的问题:

const isValidEmail = await validateDns(domain);
// ...
const validateDns = async(domain) => {
return new Promise((resolve, reject) => {
dns.resolveMx(domain, (error,addresses) => {
if(error) {
resolve(false);
}
resolve(true);
})
})
}

它可以通过dns中的回调来解决异步问题。resolve*((函数

最新更新