首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js域名系统响应延迟

Node.js域名系统响应延迟
EN

Stack Overflow用户
提问于 2012-09-03 08:15:42
回答 2查看 586关注 0票数 3

我只是尝试连接一个包含DNS解析结果的域的数组。

这是我的代码:

代码语言:javascript
复制
        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);

我得到的结果是:

代码语言:javascript
复制
[]
--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是一个空数组。

有人能在这方面帮我吗?提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-03 08:54:52

您可以这样做,跟踪仍未完成的DNS查询的数量,这样您就可以知道完整的查询集何时可用:

代码语言:javascript
复制
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);
        }
    });
}
票数 2
EN

Stack Overflow用户

发布于 2012-09-03 08:18:27

resolve是异步的,所以它不会在您执行最终打印时完成。使用同步DNS (无法立即找到node.js ),或正确安排您的回调。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12240752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档