我想获取主机名www.example.com的MX记录。节点已经有了它的功能。
dns.resolveMx(domain, callback)
但我不想要那种回调。我想要同步调用之类的东西。 e.g。
var records = dns.resolveMx(domain);
这可能吗?
(注意: - 我在Node文档中找到了该功能。链接: - http://nodejs.org/api/dns.html)
答案 0 :(得分:1)
您是否有任何理由要通过网络操作阻止您的应用程序? DNS解析器由c-ares库在C级调用,该库是设计异步的。因此,您无法使其同步。这是DNS模块中删除了不需要的部分的代码:
var cares = process.binding('cares_wrap');
function resolver(bindingName) {
var binding = cares[bindingName];
return function query(name, callback) {
callback = makeAsync(callback);
var req = {
bindingName: bindingName,
callback: callback,
oncomplete: onresolve
};
var err = binding(req, name);
if (err) throw errnoException(err, bindingName);
callback.immediately = true;
return req;
}
}
var resolveMap = {};
exports.resolveMx = resolveMap.MX = resolver('queryMx');