我是nodejs和javascript的新手。我正在學習異步編程。我試圖找到一個域名的IP地址。我正在使用nodejs inbuild「DNS」庫。Nodejs如何在沒有setTimeouts的情況下訪問回調結果?
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的單獨模塊。但由於我無法得到外面的地址越來越困難
不能全部依賴於'domainAddress'的操作應該放在回調 –
內不要使用setTimeout的,你不知道有多少時間是必要的...... – Thierry
包裹你的DNS。使用回調作爲參數解決函數中的調用。使用domainAdress – cviejo