Nodejs如何在不使用setTimeouts的情况下访问回调结果?

时间:2015-08-26 09:04:21

标签: javascript node.js

我是nodejs和javascript的新手。我正在学习异步编程。我想找到一个域名的IP地址。我正在使用nodejs构建“DNS”库。

dns.resolve(domainName, function onLookup(err, addresses, family) {
            if (err){
                res.send(err);
            } else {
                 console.log(addresses);
                 var domainAddress = addresses;
            }
        });

这是实际的代码。我试图让domainAddress退出回调。由于它的异步编程,获取domainAddress需要时间,而且我暂时无法访问它。

如果我使用的代码类似于此,我可以访问domainAddress

dns.resolve(domainName, function onLookup(err, addresses, family) {
                                if (err){
                                    res.send(err);
                                } else {
                                    domainAddress = addresses;
                                }
                            });

        setTimeout(function() {
          console.log(domainAddress);
        }, 1000);

但是我觉得这不是将回调结果导出到主程序的正确方法。

你能为这个问题提供任何替代解决方案吗?

注意: 一旦拿到IP,我想做额外的任务。我想根据IP地址找到地理位置。为此,我需要将此IP传递给名为Geoip-lite的单独模块。但是因为我无法获得非常困难的地址

0 个答案:

没有答案