【发布时间】:2020-03-19 16:42:21
【问题描述】:
我正在编写一个函数来验证 url 使用如下定义的 dns.lookup() 函数:
const dns = require('dns');
const verifyURL = (url) => {
const protocolRegEx = /^https?:\/\/(.*)/i;
const hostnameRegEx = /^([a-z0-9\-_]+\.)+[a-z0-9\-_]+/i;
if (url.match(/\/$/i)) {
url = url.slice(0,-1);
}
const protocol = url.match(protocolRegEx);
if (!protocol) {
return false;
}
const hostname = protocol[1].match(hostnameRegEx);
if (hostname) {
dns.lookup(hostname[0], (err, adderss) => {
if (err) return false;
return adderss;
})
}
}
我正在尝试从传递给dns.lookup() 函数的callback 内部返回true 或false。
(async () => {
let x = await verifyURL('https://stackoverflow.com/')
console.log(x);
})();
但是每次我运行这段代码时,我都会得到undefined 作为返回值。
我已经尝试过这个answer,但它不起作用。
请帮我。谢谢!!
【问题讨论】:
-
我的理解是
async await与 Promises 一起工作。您应该改用 DNS Promises API 吗?
标签: javascript node.js async-await dns