我只是尝试连接一个包含DNS解析结果的域的数组。
这是我的代码:
var ipList = [];
for(var j=0; j < addressList.length; j++) {
dns.resolve(addressList[j], function(error, ipRange) {
if(error !== null) {
console.log('The DNS request failed.');
}
console.log('--1--');
console.log(ipRange);
console.log('--2--');
ipList.concat(ipRange);
});
}
console.log(ipList);我得到的结果是:
[]
--1--
[ '173.194.35.144',
'173.194.35.145',
'173.194.35.146',
'173.194.35.147',
'173.194.35.148' ]
--2--看起来DNS解析响应是在concat()之后到达的,就像它被延迟了一样。这意味着ipList是一个空数组。
有人能在这方面帮我吗?提前感谢!
发布于 2012-09-03 08:54:52
您可以这样做,跟踪仍未完成的DNS查询的数量,这样您就可以知道完整的查询集何时可用:
var ipList = [], count = addressList.length;
for(var j=0; j < addressList.length; j++) {
dns.resolve(addressList[j], function(error, ipRange) {
if(error !== null) {
console.log('The DNS request failed.');
} else {
ipList.push(ipRange);
}
if (--count === 0) {
// All DNS queries are complete.
console.log(ipList);
}
});
}发布于 2012-09-03 08:18:27
resolve是异步的,所以它不会在您执行最终打印时完成。使用同步DNS (无法立即找到node.js ),或正确安排您的回调。
https://stackoverflow.com/questions/12240752
复制相似问题